Devsway

日々の記録とか記憶とか。


概要


ざっと見てみる。

感想書いてみる。


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


のタイプのnullableのところを全部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




カテゴリー

オレオレIT用語辞典