参考にさせていただいたページ
はじめに
きっかけとなったのはこちら「TypeScriptの型入門 - Qiita」の入門記事であり、キーが多い方が少ない方の部分型なの?って思って検索した次第です。
「TypeScript の構造的部分型とプリミティブ型について - 30歳からのプログラミング」を読むことでとても理解が捗りました。
コードを書いてみる
以下のようなコードで、FooBarObj型はFooObj型の部分型と言える。
type FooBarObj = { foo: string bar: number } type FooObj = { foo: string } // FooBarObj型の変数を定義する const fooBarObj: FooBarObj = { foo: 'foo', bar: 10, } // よりkeyが少ないFoo型に代入可能 const fooObj: FooObj = fooBarObj // console.log(fooObj)で出力してみると { foo: 'foo', bar: 10 } という感じでキーは残っている console.log(fooObj) // FooObj型なので、console.log(fooObj.foo)はOK console.log(fooObj.foo) // FooObj型なので、console.log(fooObj.bar)はエラーになる console.log(fooObj.bar) // FooObj型の変数を、よりkeyが多いFooBarObj型に代入しなおすことはできないのでエラーになる const fooBarObj2: FooBarObj = fooObj console.log(fooBarObj2.bar)