-
[TypeScript] typeTypeScript 2023. 12. 20. 17:57
타입을 지정할 때
: 타입 ( string, number,...)
readonly
type Age = number; type User = { readonly name : string; age?: Age } const addUser = (name:string) : User => ({name}) const kitty = addUser('kitty') kitty.age = 21
누군가 이름을 바꾸려고 하면
kitty.name = 'coco' // => error
오류가 남
=>readonly 불변성을 가지게 됨
=> push 불가능
=> map이나 filter는 가능 => 원본을 수정하지 않고 새로운 배열을 만드는것이기 때문
any
const a = [1,2,3,4] const b = true a + b // => error
const a : any[] = [1,2,3,4] const b : any = true a + b // => 에러가 나지 않음
=> 타입스크립트를 빠져나오는 속성
=> 모든 타입이 허용가능( 자바스크립트로 변환 되는것임)
tuple
const user: [number, string, boolean] = [21, 'kitty', true] user[0] = 'coco' // => error
0번째 인덱스에는 number로 타입이 정의되어있으므로 에러가 뜸!
readonly + tuple
const user: readonly[number, string, boolean] = [21, 'kitty', true] user[0] = 30 // => error
0번째 인덱스가 number가 맞지만 readonly속성으로 불변성을 갖게되어 수정이 불가능함
call signatures
type Add = (a:number,b:number) => number; const add:Add = (a,b)=> a+b
타입을 지정해주는것 = call signatures이라고 함
=> 미리 타입을 지정해주고 지정된 타입을 가져다 써서 코드가 훨씬 깔끔해짐