「基本」オブジェクトからタイプを保持したままこの問題を解決するにはどうすればよいですか? 。typescriptは、オブジェクトがスプレッドタイプのオブジェクトでなければならないと不平を言っているのはなぜですか?
function aFunction<T extends object>(base: T) {
const anObject = { test:"value" }
if (typeof base !== 'object') { return }
// the following line causes a TSC error, saying that spread types can only be
// created from object types and highlighting base as the problem... wut?
const merged = { ...base, anObject }
return merged
}
たとえば、次のようにコンパイラエラーは発生しませんが、 'base'のすべての型情報が失われます。
function aFunction(base: object) {
const anObject = { test:value }
if (typeof base !== 'object') { return }
const merged = { ...base, anObject }
return merged
}
ありがとうございます。タイプ情報を保持するタイプコピーでオブジェクトをマージすることをお勧めしますか?私はオブジェクトを主張するためにリファクタリングしました。作品はちょっとハッキリしています。 const merged = <オブジェクトのタイプとタイプ> {... base、anObject} –
laramie
@laramie私はどのようにわかりませんか。代わりに回避策として 'Object.assign'を使用します。 – weakish