728x90
type MyEvent<T> = {
target: T;
type: string;
};
type ButtonEvent = MyEvent<string>;
let myEvent: MyEvent<string | null> = {
target: "ํ๊ธธ๋์ด๋ฒคํธ",
type: "click",
};
type TimedEvent<T> = {
event: MyEvent<T>;
from: Date;
to: Date;
};
function trggerEvent<T>(event: MyEvent<T>): void {
console.log(event);
}
trggerEvent({
target: "ํฉ์ง์ด์ด๋ฒคํธ",
type: "mouseover",
});
์ ๋ค๋ฆญ ํ์
๋ณ์นญ : ํ์
๋ณ์นญ๊ณผ ํ ๋น ๊ธฐํธ(=) ์ฌ์ด์๋ง ์ ๋ค๋ฆญ ํ์
์ ์ ์ธํ ์ ์๋ค.
type MyEvent<T> = {
target: T;
type: string;
};
์๋์ ๊ฐ์ด ํ ๋น ๊ฐ๋ฅ
;
type ButtonEvent = MyEvent<'HTMLButtonElement'>;
๋ค๋ง ์ ๋ค๋ฆญ ํ์
๋ณ์นญ์์ ํ์
์ด ์๋ ์ถ๋ก ๋์ง ์์ผ๋ฏ๋ก ํ์
๋งค๊ฐ๋ณ์๋ฅผ ๋ช
์์ ์ผ๋ก ํ์ ํด์ผ ํ๋ค.
let myEvent: MyEvent<string | null> = {
target: "ํ๊ธธ๋์ด๋ฒคํธ",
type: "click",
};
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ํ์
์ ๋ง๋ค ์๋ ์๋ค.
์ด๋ ๊ฒ ๋๋ฉด ํ์
์คํฌ๋ฆฝํธ๋ T๋ฅผ ์ฐ๊ฒฐ์ง์ด ์ ์ฉ์ํจ๋ค.
type TimedEvent<T> = {
event: MyEvent<T>;
from: Date;
to: Date;
};โ
ํ์
์คํฌ๋ฆฝํธ๋ ๊ตฌ์ฒดํ์
T๋ก ํ์ ํ๋ฉด์ ๋์์ MyEvent์๋ ์ ์ฉํ๋ค.
function trggerEvent<T>(event: MyEvent<T>): void {
console.log(event);
}
trggerEvent({
target: "ํฉ์ง์ด์ด๋ฒคํธ",
type: "mouseover",
}); //{ target: 'ํฉ์ง์ด์ด๋ฒคํธ', type: 'mouseover' }
728x90