typescript에서 사용되는 Type들에 대해서 정리해보겠습니다.
const concatList1 = (array: Array<string>) => {
console.log(array.join(', '));
}
const concatList2 = (array: string[]) => {
console.log(array.join(', '));
}
concatList1(['apple', 'banana', 'cherry']); // apple, banana, cherry
concatList2(['apple', 'banana', 'cherry']); // apple, banana, cherry
function getFavoriteNumber(): number {
return 26;
}
optional은 ?
로 undefined인지 체크하는 데 사용된다, object내에서는 property가 option인 경우 사용할 수 있다.
property의 separator로는 ,
;
둘 다 사용 가능하다. 마지막 separator는 생략 가능하다.
function printName(obj: { first: string; last?: string }) {
}
function welcomePeople(x: string[] | string) {
if (Array.isArray(x)) {
console.log("Hello, " + x.join(" and "));
} else {
console.log("Welcome lone traveler " + x);
}
}
// 이 경우는, array와 string 모두 slice prototype을 갖고 있기 때문에 에러나지 않는다.
function getFirstThree(x: number[] | string) {
return x.slice(0, 3);
}
type과 interface는 용도가 거의 같고, 약간의 차이점이 있습니다, 같은 type을 한 번 이상 재사용 해야할 때 사용할 수 있습니다.
type의 확장 방법은 1가지가 있습니다.
type NormalWindow = {
price: number;
}
type ColorWindow = NormalWindow & {
color: string;
}
function myWindow(item: ColorWindow) {
console.log(item);
}
const obj = {
price: 10000,
color: 'transparent',
shop: 'lg houses'
}
myWindow(obj);
interface를 확장하는 방법은 2가지가 있습니다.
// extends로 확장하기
interface NormalWindow {
price: number
}
interface ColorWindow extends NormalWindow {
color: string
}
function myWindow(item: ColorWindow) {
console.log(item);
}
const obj1 = {
price: 10000,
}
const obj2 = {
price: 10000,
color: 'transparent',
}
const obj3 = {
price: 10000,
color: 'transparent',
shop: 'lg houses'
}
myWindow(obj1); // 에러 (TS2345)
myWindow(obj2); // 정상동작
myWindow(obj3); // 정상동작
// 기존 이름으로 확장하기
interface WindowProps {
price: number
}
interface WindowProps {
color: string
}
function myWindow(item: WindowProps) {
console.log(item);
}
const obj = {
price: 10000,
color: 'transparent',
shop: 'lg houses'
}
myWindow(obj);
type MyNewString = string;
const str: MyNewString = 'test';
as
와 <>
으로 2가지 형태로 사용 가능하다.<HTMLCanvasElement>document.getElementById("main_canvas");
document.getElementById("main_canvas") as HTMLCanvasElement;
<!-- index.html -->
<button class="btn">COUNT UP</button>
<div class="counter">0</div>
// index.tsx
const btn = document.querySelector(".btn") as HTMLButtonElement;
const counter = document.querySelector(".counter") as HTMLDivElement;
btn.addEventListener("click", (e: MouseEvent) => {
const prevCount = counter.innerHTML;
counter.innerHTML = `${Number(prevCount) + 1}`;
});
let x: 'hello' = 'hello';
let y: 'hello' = 'hallo'; // Type '"hallo"' is not assignable to type '"hello"'.
function alignment(align: 'left' | 'center' | 'right') {
console.log(align);
}
alignment('left')
function emergencyType(id: 112 | 119) {
console.log('call to ', id);
}
emergencyType(112); // call to 112
Typescript Handbook : Types