본문 바로가기

전체 글29

정규 표현식 - RegExp 문자클래스 리터럴 문자를 대괄호로 감싸서 문자클래스를 만들수 있음. 문자 클래스는 그 안에 포함된 문자 중 어떤 것과도 일치. /[abc]/ : a,b,c 모두와 일치 대괄호 안에 포함된 문자를 제외한 나머지 문자와 일치시키는 부정 문자 클래스 ^ (캐럿) /[^abc]/ : a,b,c 를 제외한 모든 문자와 일치 문자 클래스 안에서 하이픈을 써서 문자 범위 표현 /[a-zA-Z0-9]/ : 알파벳 대소문자와 숫자 전체와 일치 /[a-zA-Z0-9-]/ : 알파벳 대소문자와 숫자 전체, 하이픈과 일치 정규 표현식에서 특히 자주 사용되는 문자 클래스는 특수 문자와 이스케이프 시퀀스로 짧게 쓸 수 있음. 문자 일치하는 문자 [...] 대괄호 안에 있는 어떤 문자에든 일치 [^...] 대괄호에 포함되지 않은 .. 2022. 6. 20.
type, interface 차이 type 키워드와 interface 키워드는 용도와 기능이 거의 똑같은데 , extends 문법과 적용되는 방식이 약간 다름. 주목할 만한 차이는 1. 속성의 타입이 중복 될 때 interface 는 "상속한다" 라는 의미이고 type 은 "앞의 타입도 만족하고 뒤의 타입도 만족한다." 라는 뜻. 속성의 타입이 중복될 때 이 차이가 명확히 드러나는데 , interface 는 코드 작성시에 에러를 내주지만 type 은 코드 작성시에 에러를 내주지 않고 name이 never 타입이 된다 . (string 이면서 number 여야 하므로.) 2. 타입 이름을 중복 선언 할 때 interface 는 타입 이름 중복선언을 허용하며, 중복시에 extends 한 것과 동일하게 동작함. 위의 경우 Animal 은 {n.. 2022. 6. 13.
class 문법 타입 지정 필드값 타입 지정 클래스를 만들때 constructor 밖에서 변수처럼 만들어주는 애들을 필드값이라고 하는데 let, var, const 이런거 필요없음. 이렇게 해두면 Person 클래스의 인스턴스들이 모두 data=0; 을 갖다 쓸수 있음. 타입지정은 다음과 같이, constructor 타입 지정 자바스크립트에서는 constructor 를 쓸 때 이렇게 해도 에러가 안나지만 타입스크립트에선 이렇게 쓰면 에러남. this.name 에 마우스를 올려보면 다음과 같은 에러를 띄워준다. Property 'name' does not exist on type 'Person'.ts(2339) 타입스크립트에선 필드값에 name, age 가 미리 정의 되어 있어야 사용가능. constructor는 함수이기 때문에 c.. 2022. 6. 13.
HTML Dom narrowing tsconfig.json 에서 "strictNullChecks" : true 나 "strict": true 옵션을 설정하면 이런 널 값을 잡아주는데, 특히 html 조작할때 셀렉터로 찾으면 null 값이 많이 발생함. 이거 잡을때 특히 유용. 쨋든 여기서 에러가 나는 이유는 셀렉터로 html 을 찾으면 타입이 Element | null 이라서 그럼. 왜냐면 html 못찾아내면 null 이 되기 때문. 이걸 해결하려면 여러 방법이 있는데 1. 그냥 narrowing 을 해준다. 2. instanceof 를 사용해서 narrowing을 해준다. 3. assertion 을 쓴다. 4. optional chaining( 옵셔널 체이닝 )을 쓴다. 5. 그냥 strict 옵션을 끈다. 5가지 방법중 2번의 방법이.. 2022. 6. 10.
함수, 메서드에 타입달기 1.함수에 직접 타입달기 입력값(파라미터), 출력값 (리턴값) 에 함수에서 직접 타입 달기. 2.함수 타입을 따로 작성해서 달기 - type 키워드 type 키워드를 이용해서 따로 함수타입을 지정할때는 함수선언문을 쓸수 없음. 함수선언문에는 type 키워드 이용 불가. 함수표현식에다가 함수타입을 할당해주면 되는데 함수타입을 작성할때는 화살표함수를 써야함. 3.메서드에 타입달기 예제에 plusOne 과 sayHello 라는 메서드가 있는데 리턴할게 없는 메서드나 함수는 void 2022. 6. 10.
as const 문법 "kim" 이라는 리터럴 타입만 파라미터로 들어올 수 있는 함수를 만들었습니다. object 의 프로퍼티를 넣고싶습니다. 근데 타입스크립트가 에러를 냅니다. 왜냐면 함수는 파라미터 a 에 "kim" 타입을 입력할수 있다고 해놨는데 varObject.name 은 string 타입이지 "kim" 타입이 아니기 때문입니다. 이걸 해결하려면 1. object 만들때 타입을 미리 잘 정한다. 2. type assertion 을 쓴다. ( as "kim") 3. as const 를 객체에 붙인다. 객체에 as const 붙이면 에러 없어짐. as const 는 효과가 2개인데, 1. 타입을 object 의 value 로 바꿔준다. (name 의 타입을 "kim" 으로 바꿔준다.) 2. object 안에 있는 모든 .. 2022. 6. 10.