1. ホーム
  2. typescript

[解決済み] エラー TS2345: 型 'T' の引数は型 'object' のパラメータに代入できません。

2022-03-11 03:30:29

質問

以下のコードは、TypeScript 2.1.6で問題なく動作していました。

function create<T>(prototype: T, pojo: Object): T {
    // ...
    return Object.create(prototype, descriptors) as T;
}

TypeScript 2.2.1にアップデートしたところ、以下のエラーが発生するようになりました。

エラー TS2345: 型 'T' の引数は、型 'T' のパラメータに割り当てることができません。 タイプ 'object' です。

解決方法は?

関数のシグネチャを変更し、ジェネリック型の T 拡張型 object は、Typescript 2.2 で導入されました。この構文を使って <T extends object> :

function create<T extends object>(prototype: T, pojo: Object): T {
    ...
    return Object.create(prototype, descriptors) as T;
}