TypeHero Challenges 記錄: Generic Type Constraints

TypeHero Challenges 記錄: Generic Type Constraints

TypeHero 是一個提供給工程師們練習 TypeScript 的開源平台,獻給一直想要學 TypeScript 卻觀望很久都沒有行動的你,歡迎一起來練習 TypeHero 變成 TypeScript 大師ㄅ!

練習題目

根據題目所提供的 Test 條件,去設定各個 type 該要帶入的值

1
2
3
4
type AllowString = unknown;
type AllowNumber = unknown;

type CreateLogger = unknown;

解法

1
2
3
4
5
6
7
type AllowString<T extends string> = T;
type AllowNumber<T extends number> = T;

type CreateLogger<T extends (a: number) => void> = {
log: T;
exit: () => void;
};

學習記錄

這邊除了滿足題目的需求(通過 test)之外,有發現其他人提供的 solution 裡面包含了這些 type 或 function 實際應用的例子,所以才想說來記錄一下寫題目的過程。
這邊會提供題目請我們撰寫的 type CreateLogger 來做應用:

1
2
3
4
5
6
7
8
9
10
11
12
13
type LogFunction = (a:number) => void;

const logger: CreateLogger<LogFunction> = {
log: (num) => {
console.log(num);
},
exit: () => {
console.log("Exiting logger");
}
}

logger.log(2020); // 2020
logger.exit(); // Exiting logger

參考資料

評論