ウェブサイト検索

TypeScriptでインターフェースや型のサブフィールドのtypeofを取得する


以下に宣言されたインターフェースまたは型が与えられた場合、

interface Foo {
  bar: {
    a: number
    b: string
  }
}

type Foo = {
  bar: {
    a: number
    b: string
  }
}

「baz」の型定義を取得する方法はありますか。これは、次のようなことを行うためです

const v: keyof Foo.bar = "a";

回答 #1

はい、あなたはそのようにすることができます

const invalid: Foo["bar"] = "a"; // Type '"a"' is not assignable to type '{ a: number; b: string; }'.(2322)
const valid: Foo["bar"] = { a: 1, b:'a' };

type と interface で動作します。こちらが動作するプレイグラウンドです