2017-04-24 9 views
0

私はReactとTypeScriptの両方に新しいので、私が見逃したことがあるかもしれません。私は、次の操作を実行しようとしている:React TypeScriptプロパティ 'assign'が 'Object constructor'型に存在しません

const props = Object.assign({}, this.props, { 
    loaded: this.state.loaded 
}); 

私は私の.tsxファイルで、このエラーを取得:this threadと試してみましたが見つかりProperty 'assign' does not exist on type 'Object constructor'.

Property 'any' does not exist on type 'JXS.IntrinsicElements'.

const props = (<any>Object).assign({}, this.props, { 
    loaded: this.state.loaded 
}); 

が私にこのエラーを与えました

私もこれを試しましたが、宣言のためにUnexpected modifierを返しました。

declare interface ObjectConstructor { 
    assign(target: any, ...sources: any[]): any; 
} 

何が欠けていますか?

+0

これはちょっと奇妙です。あなたはもう少し文脈を与えることができますか?例えば。あなたが使っているコンポーネントと、おそらくあなたの 'tsconfig'ですか?最初のコードスニペットに問題はないはずですから。 –

答えて

2

Object.assignあなたがes6をターゲットにする必要があるので、es6機能です:

{ 
    "compilerOptions": { 
     ... 
     "target": "es6", 
     ... 
    } 
} 

あなたがes6をターゲットが、まだあなたのコードは、あなたが新しいes6機能をサポートしていない環境で実行されることを確実に知ることができない場合libを使用することができます:

{ 
    "compilerOptions": { 
     ... 
     "target": "es5", // for example 
     "lib": ["DOM", "ES6", "ScriptHost"], 
     ... 
    } 
} 

また、この機能を自分で追加することもできます。
あなたは(lib.es6.d.tsからコピー)の定義を追加する必要があります:

interface ObjectConstructor { 
    assign<T, U>(target: T, source: U): T & U; 
    assign<T, U, V>(target: T, source1: U, source2: V): T & U & V; 
    assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W; 
    assign(target: any, ...sources: any[]): any; 
} 

そしてpolyfill itを。

あなたは、あなたの中tsxファイルをキャストのこのフォームを使用することはできませんしようとした鋳造部品用として、あなたはこれを実行する必要があります。tsx内のファイル

const props = (Object as any).assign({}, this.props, { 
    loaded: this.state.loaded 
}); 

ので、コンパイラは思うよう<any>ことhtml/react要素。

関連する問題