์ ๋ ฅ ํ์ ์ ๋ฐ๋ผ ๊ทธ ํ์ ์ผ๋ก ๋ฐํํ๋ค๋ ๊ด๊ณ๋ฅผ ์ค์ ํ๋ค.
interface Cat{
name:string;
age: number;
}
function identity<T>(item: T): T{
return item;
}
identity<number>(5);
identity<string>("hi");
identity<Cat>({name : 'miya', age: 5})
function getRandom<T>(list: T[]): T {
const randIdx = Math.floor(Math.random() * list.length);
return list[randIdx];
}
getRandom<string>(["a","b","c"]);
getRandom<number>([32,12,4,6]);
์ ๋ค๋ฆญ ํจ์์ ํ์ ์ ์ ์ธํ์ง์์๋ ํ๋ผ๋ฏธํฐ ํน์ ์ธ์๋ฅผ ํตํด ํ์ ์ ์ถ๋ก ํ ์ ์๋ค.
function getRandom<T>(list: T[]): T {
const randIdx = Math.floor(Math.random() * list.length);
return list[randIdx];
}
getRandom(["a","b","c"]);
getRandom([32,12,4,6]);
tsx : TypeScript๋ฅผ ์ฌ์ฉํ ์ ์๋ JSX ํ์ผ
JSX์์ javascript์ HTML ํ
ํ๋ฆฟ์ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ํญ์ ํํ์ด๊ดํธ('<')๋ฅผ ์ฌ์ฉํด์ผํ๋ค
์ ๋ค๋ฆญ์๋ ๊ฐ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์ดํ ํจ์๋ฅผ ์์ฑํ๋ฉด ํท๊ฐ๋ฆด ์ ์๋ค
TSX ํ์ผ๋ก ์์ ํ๋ฉด์ ์ ๋ค๋ฆญ ํจ์์ธ ํ์ดํ ํจ์๋ฅผ ์์ฑํ ๋ ํํ ์ผํ๋ฅผ ๋ถ์ด์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
const getRandom = <T,>(list: T[]): T =>{
const randIdx = Math.floor(Math.random() * list.length);
return list[randIdx];
}
๋ ๊ฐ์ด์์ ํ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ ์๋ ์๋ค.
function merge<T,U>(object1:T, object2:U){
return {
...object1,
...object2
}
}
const comboObj = merge({name: "colt"}, {pets: ["blue","elton"]});
function merge<T extends Object,U extends Object>(object1:T, object2:U){
return {
...object1,
...object2
}
}
const comboObj = merge({name: "colt"}, {num: 9});
interface Length{
length : number;
}
function printDoubleLength<T extends Length>(thing: T): number{
return thing.length * 2;
}
์ ๋ค๋ฆญ์ ํ์ ํ๋ผ๋ฏธํฐ์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ ์ ์๋ค.
function makeEmptyArray<T = number>(): T[]{
return [];
}
const nums = makeEmptyArray(); // ๊ธฐ๋ณธ ํ์
๊ฐ์ด number์ด๊ธฐ ๋๋ฌธ์ number๋ก ์ธ์
const bools = makeEmptyArray<boolean>();
interface Song{
title: string;
artist: string;
}
interface Video{
title: string;
creator: string;
resolution: string;
}
class PlayList<T>{
public queue: T[] = [];
add(el: T){
this.queue.push(el);
}
}
const songs = new PlayList<Song>();
const Videos = new PlayList<Video>();