String
TypeScript - 작성자와 사용자의 관점으로 코드 바라보기
TypeScript - 작성자와 사용자의 관점으로 코드 바라보기
2022.02.07작성자와 사용자의 관점으로 코드 바라보기 타입 시스템 컴파일러에게 사용하는 타입을 명시적으로 지정하는 시스템 컴파일러가 자동으로 타입을 추론하는 시스템 타입스크립트의 타입 시스템 타입을 명시적으로 지정할 수 있다. 타입을 명시적으로 지정하지 않으면, 타입스크립트 컴파일러가 자동으로 타입을 추론한다. 사용자, 작성자의 입장 타입이란? 해당 변수가 할 수 있는 일을 결정한다 // JavaScript // f1이라는 함수의 bodt 에서는 a 를 사용할 것이다. // a 가 할 수 있는 일은 a 의 타입이 결정한다. function f1(a) { return a; } 자바스크립트에선 함수 사용법에 대한 오해를 야기할 수 있다. // JavaScript // (f2 실행의 결과가 NaN을 의도한 것이 아니라면)..
TypeScript - void
TypeScript - void
2022.02.07Void function returnVoid(message: string): void { console.log(message); return undefined; // function returnVoid(message: string): void // undefined 만 유일하게 void에 할당될 수 있다. } const r = returnVoid("리턴이 없다."); // const r: void // void 라고 표시된 함수의 리턴을 가지고 어떠한것도 하지 않겠다고 명시적으로 표현하는 것이다. Notion : https://torpid-pasta-de7.notion.site/Basic-Types-7c1eff4fb5f3449e932fb1d157da1f25
TypeScript - never
TypeScript - never
2022.02.07Never function error(message: string): never { throw new Error(message); } function fali() { return error("failed"); } function infinitLoop(): never { while (true) {} } never 타입은 모든 타입의 subtype 이며, 모든 타입에 할당할 수 있다. 하지만, never 에는 그 어떤 것도 할당할 수 없다. any 조차도 never에게 할당할 수 없다. 잘못된 타입을 넣는 실수를 막고자 할 때 사용하기도 한다. let a: string = "Kdong"; if (typeof a !== 'string') { a; // let a: never } declare const b: ..
TypeScript - unknown
TypeScript - unknown
2022.02.07Unknown 응용프로그램을 작성할 때 모르는 변수의 타입을 묘사해야 할 수도 있다. 이러한 값은 동적 콘텐츠(예: 사용자로부터, 또는 우리 API의 모든 값을 의도적으로 수락하기를 원할 수 있다.) 컴파일러와 미래의 코드를 읽는 사람에게 이 변수가 무엇이든 될 수 있음을 알려주는 타입을 제공하기를 원하므로 unknown 타입을 제공한다. declare const maybe: unknown; const aNumber: number = maybe; // Type 'unknown' is not assignable to type 'number'. if (maybe === true) { const aBoolean: boolean = maybe; // const aString: string = maybe; // ..
TypeScript - any
TypeScript - any
2022.02.07Any 어떤 타입이어도 상관없는 타입이다. 이걸 최대한 쓰지 않는게 핵심이다. 왜냐하면 컴파일 타임에 타입 체크가 정상적으로 이뤄지지 않기 때문이다. 그래서 컴파일 옵션 중에는 any를 써야 하는데 쓰지 않으면 오류를 뱉도록 하는 옵션도 있다. noImplicitAny function returnAny(message: any): any { console.log(message); } const any1 = returnAny("리턴은 아무거나"); any1.toString(); any는 게속해서 개체를 통해 전파된다. 결국, 모든 편의는 타입 안전성을 잃는 대가로 온다. 타입 안전성은 TypeScript를 사용하는 주요 동기 중 하나이며, 필요하지 않은 경우에는 any를 사용하지 않도록 해야 한다. let ..
TypeScript - Tuple
TypeScript - Tuple
2022.02.07Tuple 길이가 정해져 있고, 앞뒤의 타입이 정확한, 다를 수 있는 자료형이다. let x: [string, number]; x = ["Kdong", 30]; // 길이, 순서도 다 맞아야 한다. // x = [10, 'Omna']; // 에러가 뜬다. x[2] = "world"; // Type '"world"' is not assignable to type 'undefined'. // Tuple type '[string, number]' of length '2' has no element at index '2'. const person: [string, number] = ["Kdong", 30]; const [first, second] = person; // const [first, second, t..
TypeScript - Array
TypeScript - Array
2022.02.07Array 원래 자바스크립트에서 array는 객체이다. 사용방법 Array 타입[] let list: number[] = [1, 2, 3]; // 이 방법을 가장 많이 사용한다. let list: (number | string)[] = [1, 2, 3, "4"]; // let list: Array = [1, 2, 3]; Notion : https://torpid-pasta-de7.notion.site/Basic-Types-7c1eff4fb5f3449e932fb1d157da1f25
TypeScript - object
TypeScript - object
2022.02.07Object 프리미티브 타입이 아닌 것을 나타내고 싶을 때 사용한다. number, string, boolean, symbol, null undefined 가 아닌걸 할달할 수 있을때 사용가능하다. // create by object literal const person1 = { name: "Kdong", age: 30 }; // person1 is not "object" type. // person1 is "{ name: string, age: number }" type. // create by Object.create(전역내장객체?) const person2 = Object.create({ name: 'Kdong', age: 30}); Notion : https://torpid-pasta-de7.no..