6
這段代碼的參數:參數類型「元素」是不能分配給類型「ReactElement <any>
error TS2345: Argument of type 'Element' is not assignable to parameter of type 'ReactElement<any>'.
Type 'null' is not assignable to type 'ReactElement<any>
這隻:
import * as React from 'react';
const Component =() => <div/>;
function culprit<P>(node: React.ReactElement<P>) {
console.log(node);
}
culprit(<Component/>);
...與打字稿編譯時會產生這個編譯錯誤發生在strictNullChecks TypeScript編譯標誌設置爲true
。
是的,我可以禁用該標誌,但我希望它增加編譯時檢查/安全。
如果我改變最後一行是:
culprit((<Component/> as React.ReactElement<any>));
...它的工作原理與設置爲true
標誌。
我最近嘗試從React項目中將「純」JavaScript轉換爲TypeScript,並且這會跳過我所有的測試,因此將所有TypeScript類型斷言添加到測試代碼中的所有這些事件中將會很痛苦。
這是一個錯誤,還是我沒有別的選擇?
我已經試過'@類型/ react'版本15.0.6,15.0.4,15.0.0和他們都仍然產生了我的問題,很遺憾。 – pleasedesktop
版本0.14.57的作品,但那是在與'| | null「被引入(這是你似乎一直試圖讓我)。然而,React應該允許渲染函數返回null,所以我不認爲React類型定義是錯誤的,我認爲所有不允許'null'的類型定義都需要更新。我從Enzyme.js中獲得了這個「罪魁禍首」函數簽名,因此它的類型定義將需要更新。 – pleasedesktop
15.0.4解決了我的問題,但我想你必須做一些不同的事情(或者在你的設置中有不同的東西)。 –