概要
ざっと見てみる。
感想書いてみる。
Partial
いいね!
使える。
Readonly
いいね!
使える。
Record<K,T>
いいね!
使える。
Pick<T,K>
まぁまぁ。
Omit<T,K>
Omitってなんだっけ。・・・省略でした。
Extract<T,U>
抽出にするパターン。
NonNullable
Objectからundefinedとnull…つまり未定義のものを削除して有効なものだけを取得するパターン。
結構使えそう、
Parameters
関数型Tのパラメーターの型のタプル型を構築します。
わからない。。
…わかった。
関数の引数のParametersだけを取得したい場合ね。
type T1 = Parameters<(s: string) => void>; // [string]
type T1 = Parameters<(s: string, n: number) => void>; // [string, number]
ConstructorParameters
Parametersのコンストラクター版。
ReturnType
関数から返り値の型だけを抽出する場合。
InstanceType
インスタンス時のタイプ?
いまいち使いどころがわからん。。
Required
いいね。これは使えそう。
ThisParameterType
thisのパラメータを取得するみたい。
う〜ん。。
OmitThisParameter
よくわからない。
ThisType
マーカーをつけるだけ。
言い換えると型の矯正をするだけ。
…複雑ですね。。
要はthis
の内容を強制することができる、ッテ感じみたい。
type ObjectDescriptor<D, M> = {
data?: D;
methods?: M & ThisType<D & M>; // Type of 'this' in methods is D & M
}
function makeObject<D, M>(desc: ObjectDescriptor<D, M>): D & M {
let data: object = desc.data || {};
let methods: object = desc.methods || {};
return { ...data, ...methods } as D & M;
}
let obj = makeObject({
data: { x: 0, y: 0 },
methods: {
moveBy(dx: number, dy: number) {
this.x += dx; // Strongly typed this
this.y += dy; // Strongly typed this
}
}
});
参考
https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlyt
最近のコメント