우선 타입스크립트 설치 및 설정은 다음 링크 참고
- 원시타입:
string
,number
,boolean
잘 사용하지 않지만bigint
,symbol
- 배열: [] (e.g.
number[]
,Array<number>
)- 오브젝트: {} (e.g.
{x:number, y:number}
)- any: 타입 검사 비활성화 (typescript보다 똑똑할 때 쓰기)
- unknown: any 대신 사용, 모든 타입 사용 가능, 자료가 할당되어도 unknown
- 잘 사용하지 않는: null, undefined, never
- 그 외: Date 등의 타입이 있다.
- 사실 유니언 타입도 새로운 타입이 된다. (e.g.
number | string
)
// 변수 선언시 추론됨. 명시적으로 표기할 경우 사용
let temp :number = 24;
let books :string[] = ['wind', 'gone'];
let rabbit :{ear : number} = {ear: 2};
// literal type
// 유니언 타입이 아니면 const와 동일한 역할
let name :'kim' | 'park' = 'park';
다음 예시에서 any와 다르게 unknown은 에러가 난다.
// ERROR
let name: unknown;
let child1: string = name;
let child2: boolean = name;
let child3: number = name;
// ERROR
let name: unknown;
name[0];
name - 1;
name.data;
// 타입을 조합하는 방법 중 하나.
// 유니언 타입의 각 타입은 멤버라고 함.
// 모든 멤버가 유효한 작업이 아닐 경우에 narrowing
function guessWhat(x :number | string) :number | string {
if (typeof x === 'number') {
return x * 2
} else {
return "noting!"
}
}
// 배열
let array: (number | string)[] = [10, 'cat', 30]
// 오브젝트
let object: {data: (number | string)} = {
data: 30
}
// array 안에 순서를 포함하여 정확히 지정하고 싶을 때 사용.
type CarOptions = [number, boolean];
let car :CarOptions = [4, true]
?
string | undefined
과 같다. function printName(obj: { first: string; last?: string }) {
// ...
}
// 둘 다 OK
printName({ first: "Bob" });
printName({ first: "Alice", last: "Alisson" });
const
는 변수 재할당만 막기 object의 속성까지 막진 않는다. 만약 오브젝트 속성을 변경하지 못하도록 설정하려면 readonly
키워드를 사용한다. let friend :{
readonly name: string,
} = {
name : 'jane'
}
:void
로 작성 function getPos(x :number) :number {
return x * 2
}
function greet(person: string, date: Date) :void {
console.log(`Hello ${person}, today is ${date.toDateString()}!`);
}
type
으로 지정할 수 있다. type Point = {
x: number;
y: number;
};
function printCoord(pt: Point) {
console.log("The coordinate's x value is " + pt.x);
console.log("The coordinate's y value is " + pt.y);
}
printCoord({ x: 100, y: 100 });
interface Point {
x: number;
y: number;
}
function printCoord(pt: Point) {
console.log("The coordinate's x value is " + pt.x);
console.log("The coordinate's y value is " + pt.y);
}
printCoord({ x: 100, y: 100 });
extends
로 확장한다. interface Animal {
name: string
}
interface Bear extends Animal {
honey: boolean
}
&
확장한다. |
로 유니언 타입을 만들 수 있다. type Animal = {
name: string
}
type Bear = Animal & {
honey: Boolean
}
interface Window {
title: string
}
interface Window {
ts: TypeScriptAPI
}
type Window = {
title: string
}
type Window = {
ts: TypeScriptAPI
}
// ERROR
const myCanvas = document.getElementById("main_canvas") as HTMLCanvasElement;
readonly
가 된다. const req = { url: "https://example.com", method: "GET" } as const;
handleRequest(req.url, req.method);