hro19 / Typescript_Katsutadai

Typescript workshop in 勝田台
0 stars 0 forks source link

Typescriptの構造的部分型 #3

Open hro19 opened 1 year ago

hro19 commented 1 year ago
type MyObj = {
  foo: string;
  bar: number;
}

type MyObj2 = {
  foo: string;
}

const aaa: MyObj = {foo: 'foo', bar: 3};

//cccは正しく代入することができない
const ccc: MyObj2 = {foo: 'foo', bar: 3};
console.log(ccc);

//bbbは正しく代入することができる
//TypeScriptでは構造的部分型を採用しているため、次のようなことが可能です
const bbb: MyObj2 = aaa;
console.log(bbb);
hro19 commented 1 year ago

TypeScriptの構造的部分型

異なる二つの型システム

公称型

それぞれに継承関係があれば互換性があるとみなす。 Java, PHP

構造的部分型

それぞれの構造をチェックし、それが一致すれば両者には互換性があるとみなす。 TypeScript, Go

TypeScriptの構造的部分型をアニメ「NARUTO」で説明する
TypeScript の構造的部分型とプリミティブ型について