typescript keyof
1 | export type User = { |
- 나이수
1 | export type User = { |
1 | function isValidPostAttributes( |
.
찍으면 자동완성 안뜨는 타입들을 특정 타입으로 좁혀줘서, 자동완성 지원도 받을 수 있다1 | function isNumber(x: any): x is number { |
as
로 강제 캐스팅하여 사용하지 않아도 된다!1 | enum TestStatus { |
Numeric enums
의 경우 멤버 이름과 값이 나온다String enums
의 경우 값만 나온다tsconfig에 baseUrl을 ./src
로 설정했다
그런데 eslint가 못 알아먹는다
알아먹도록 해보자
npx eslint --init
을 통해 eslint 환경을 구성했다1 | yarn add -D eslint-import-resolver-typescript |
eslint-import-resolver-typescript
는 tsconfig에서 path alias를 사용할 수 있도록 해주는 패키지다1 | { |
parserOptions.project
와 settings.import/resolver.typescript
에 위 내용처럼 추가한다ESLint: Restart ESLint Server
또는 Developer: Reload Window
을 꼭 해주자Jest encountered an unexpected token
SyntaxError: Cannot use import statement outside a module
typescript 프로젝트에서 jest
설치 후에 테스트 작성하는데, 이상하게 오류가 떴다
무고한 eslintrc, tsconfig 이것저것 건드려봤는데 잘 동작하지 않았다
알고 보니까 typescript에서 jest 사용하려면 아래 절차를 yarn add -D jest
이후에 추가적으로 해줘야 한다
1 | # jest 설치 |
1 | module.exports = { |
1 | { |
자주 쓰는 타입 유틸 ; Partial, Pick, Omit, Record
Partial
을 사용해서 각 필드를 옵셔널로 만들 수 있다1 | type Todo = { |
1 | type Todo = { |
for(;;)
로 다 짜고..1 + ‘1’
// ‘11’
.
찍어도 array api 자동완성이 안된다.
만 찍으면 전부 자동완성 해준다. 오타로 인해 삽질할 필요가 전혀없는거다ctrl space
만으로 코드를 작성할 수 있다 ㅋㅋㅋ1 | interface MyType { |
1 | const myObject: MyType = { |
1 | -----------------map을 포함한 오브젝트 json stringify |
1 | const stringify = (object: any) => { |
myObject
와 같은 중첩 map을 포함하고 있고,Map<number,string>
일 경우에만 때만 테스트해보아서, 더 다양한 경우에도 동작할지는 모르겠다{ }
로 묶여있는…{ a: new Map() }
한번 감싸주면 된다1 | interface myType { |
1 | class MyClass { |
function
과 arrow function
차이를 실감하게 되었다arrow function
은 this를 바인딩하지 않는다arrow function
은 bind를 사용할 수 없다