텀블벅의 두번째 서비스
{API}
{Web-client}
function getName(person) {
return person.name
}
getName({ nam: 'typo key' })
// undefined
type Person = {
name: string
}
function getName(person: Person) {
return person.name
}
getName({ nam: 'typo key' })
Argument of type '{ nam: string; }' is not assignable to parameter of type 'Person'.
Object literal may only specify known properties, but 'nam' does not exist in type 'Person'. Did you mean to write 'name'?
Javascript
Typescript
코드 한 줄 없는 Typescript 사용기
혼자 다뤄야 하는 코드가 많아서 생기는 일
나: "처음 뵙겠습니다"
코드: "세번째 뵙는뎁쇼..."
혹은 의 원인을 매번 찾아헤메지 않아도 됨
XXX of undefined
XXX is not a function
코드 내부에서 입력값을 받는 코드라면 '런타임에서 타입을 검사하는 코드' 혹은
'타입관련 테스트'를 작성할 필요가 없음
코드 내부에서 입력값을 받는 코드라면 '런타임에서 타입을 검사하는 코드' 혹은
'타입관련 테스트'를 작성할 필요가 없음
파라미터 타입 검사 코드
그리고 그 테스트
코드 내부에서 입력값을 받는 코드라면 '런타임에서 타입을 검사하는 코드' 혹은
'타입관련 테스트'를 작성할 필요가 없음
이게 끝? 개이득..😎
파라미터 타입 검사 코드
그리고 그 테스트
refactoring 전
refactoring 후
함수의 input output 타입이 변하지 않음을 확인할 수 있기 때문에
리팩토링 전과 동작이 동일함을 믿을 수 있음.
문서를 보지 않아도 사용하는 프로퍼티의 타입과, 함수의 파라미터 타입을 알 수 있음.
한번에 많은 코드를 동시에 볼 수 있어서 컨텍스트 파악이 용이함.
문서
에디터
에디터
Javascript
Typescript
인프라로 사용하는 framework나 library가 Typescript를 지원하지 않으면 세팅이 불편함.
문서
에디터
문서
에디터
React server-side-rendering 프레임워크
next.js의 내장된 webpack에서 타입스크립트 로더를 지원하지 않음.
그래서 컴파일된 javascript를 다시 webpack으로 빌드하도록 함.
Typescript 컴파일
Typescript 컴파일
Typescript 컴파일
Webpack 빌드
Webpack 빌드
Webpack 빌드
XXX as any
해당 변수의 type을 무시.
type system의 장점을 희석해서 안쓰는게 좋지만 어쩔 수 없이 사용해야할 때가 있다.
(ex. 외부 라이브러리에서 private 프로퍼티에 접근하는 경우)
문서
에디터
import * as moment from 'moment'
const time = moment()
// Property '_data' does not exist on type 'Moment'
console.log(time._data)
console.log((time as any)._data)
문서
에디터
문서
에디터
Javascript 패키지의 type이 정의된 패키지
npm install lodash
npm install -D @types/lodash
문서
에디터
문서
에디터
1명
n명
React의 핵심은 Props와 State
이것을 가능하게 해주는 ts 타입정의
Container
View
통신 및 데이터 담당
액션과 비주얼 담당
Container
View
통신 및 데이터 담당
액션과 비주얼 담당
이벤트
데이터
이렇게 미리 약속해놓고
서로 맞닿는 부분을 먼저 써주면
다른 한 쪽이 구현되어있지 않아도 사용하는 코드를 만들 수 있다.
(세부적인 구현은 서로 병렬로 진행)
container
view
2 + 2 = 4일
container
view
2일
한없이 기다림...
좋... 좋은 쪽으로