TypeScriptの型演習 - Qiitaを解く
この章は単なる文法の確認なので飛ばす
1. 関数に型をつける
2. オブジェクトの型
3. 関数の型
4. 配列の型
この章も文法の確認
1. ジェネリクス
2. いくつかの文字列を受け取れる関数
3. 省略可能なプロパティ
4. プロパティを一つ増やす関数
これってどっちが正解?
こっちだと思うのだがtakker.icon
code:ts
const giveId = <T extends Record<string, unknown>>(obj: T)
=> ({ ...obj, id: "id" });
これだとprimative型も含まれてしまう?
code:ts
const giveId = <T>(obj: T) => ({ ...obj, id: "id" });
2022-01-18 20:56:49 解答だとこれでいいっぽい
T=numberだとどうなるんだろう
21:06:01 何も出力されなかった
5. useState()
ちょっと複雑か。まあ簡単だけど
code:ts
declare function useState<T>(initialState: T):
1. 配列からMapを作る
code:ts
function array2Map<T>(list: T[], key: keyof T) {
const map = new Map<string, T>();
for (const item of list) {
}
return map;
}
2. Partial
code:ts
再帰的にoptional propertyにしたい場合はどうすればいいんだろう?
3. イベント
interfaceは問題から簡略化してある
code:ts
interface EventPayloads {
start: {
user: string;
};
stop: {
user: string;
after: number;
};
end: {};
}
function emit<K extends keyof EventPayloads>(
eventName: K,
eventData: EventPayloadsK, ): void;
4. reducer
5. undefinedな引数
1. 無い場合はunknown
2. プロパティを上書きする関数
3. unionは嫌だ
4. 一部だけPartial
5. 最低一つは必要なオプションオブジェクト
6. ページを描画する関数
7. 条件を満たすキーだけを抜き出す
8. オプショナルなキーだけ抜き出す