signature of Object.assign
を見ると、交差の種類が使用されていることがわかりますが、その動作は予期したものではありません。TypeScript Object.assign confusion
私はObject.assign
を使っていくつかの変更を古いオブジェクトとマージして新しいオブジェクトを作成します(不変のデータパターンに従うときJSの一般的な習慣と同じです)。そして、TypeScriptが部分と結果が正しいことを検証しますTypeScriptは何もせずにエラーなしで可能です。例えば
:
interface Thing {
name: string;
age: number;
fav: boolean;
}
let oldThing: Thing = {
name: "Aaa",
age: 123,
fav: false
};
let newThing: Thing = Object.assign({}, oldThing, {
name: "Bbb",
age: "abc", // should be type error
fake: "fakey" // should be unknown prop error
});
なぜObject.assign
は、この間違った割り当てはThing
できるようにするのでしょうか?この仕事を私が期待していたものに近づける方法はありますか?
あなたはそれがjavascrだtypescriptですコンパイラを幸せにするためにすべての要件を満たしますが、一日の終わりに覚えてきましたあなたのコードとjavascriptを実行するiptは気にしません。 –
ねえ、私はいつもそのことを思い出しています。 :)しかし、ここで私の質問は*コンパイル*ですか? 'Thing'への割り当ては、それらのプロパティのコンパイルエラーになるはずです。たぶん私は型チェッカーがどのように割り当てを検証するのか分かりません。 – Aaron