タイプスクリプトインターフェイスの部品を得る方法

6059 ワード

今日、私はすでに既存の複雑なタイプスクリプトタイプまたはインターフェースの一部を抽出したかったです.
何を検索するかわからないときにGoogleの何かを非常に困難です.あなたがこれらの質問の1つを持っているならば、このポストはあなたを助けます:
  • 入れ子になったタイプを得る方法?
  • どのようにインターフェイスの部品を取得するには?
  • 配列要素のタイプを得る方法?
  • タイプの任意の特性を抽出する方法?
  • 私は自分でこれを探して、結果に満足していなかった.

    では始めましょう
    以下のようにします
    type Person = {
        name: string
        age: number
        // nested object
        address: {
            street: string
        }
        // nested array
        tags: string[]
        // optional object
        info?: {
            eyeColor: string
        }
    }
    

    基本部品
    このタイプの特定の部分を抽出するにはlookup types
    type Name = Person["name"]
    type Age = Person["age"]
    type Address = Person["address"]
    // deeply nested access is also possible
    type Street = Person["address"]["street"]
    

    配列要素の型を抽出する
    型指定された配列の型を取得するにはtags アレイのルックアップタイプを使用できます.
    type Tag = Person["tags"][0]
    

    オプションのプロパティ
    しかし、どのようにして任意のプロパティの型を取得するかinfo 正しく?私たちがタイプ1を望むと言いましょうeyeColor . オプション型のプロパティの基本型を取得するには、正しく使用する必要があります NunNullable type
    type Info = NonNullable<Person["info"]>
    type EyeColor = Info["eyeColor"]  // string
    

    配列の値から型を取得する
    const languages = ['de', 'en', 'fr', 'it'] as const;
    
    // extract type from languages above
    export type Language = typeof languages[number]; // same as de" | "en" | "fr" | "it"
    

    最後の思考
    より多くのTypeScript啓蒙をもつ私のためのもう一つの日😆. このポストがあなたを助けることができるという望み.