我將現有的代碼庫從js/react/jsx設置轉換爲TypeScript。當然,我希望逐個文件地完成它,並且有一個關於使TS編譯器與現有的js代碼庫一起工作的方法的問題。在TypeScript中增加導入模塊的類型
我轉換文件index.js
但要離開foo.js
在JavaScript現在:
// index.ts
import { fooFunction } from 'foo';
foo({ val: 1 });
// foo.js
export const fooFunction = ({ val, optionalProp }) => {
//...
}
是打字稿自動推斷參數foo
並抱怨在這個例子中的問題Property 'optionalProp' is missing in type { val:string, optionalProp:any }
需要「存根」的類型fooFunction
寄給我看一個d我找到了一些方法,我可能能夠做到這一點:
1)使用需要,而不是進口
// index.ts
var fooFunction: any = require('foo').fooFunction;
2)合併申報
?
3)添加包含自定義聲明的d.ts文件foo
- 尚未嘗試但看起來不方便
理想的情況下,我沒有做(1),因爲我想用進口語法來保持和我沒有做(3),因爲這將需要我補充申報文件只將它們刪除稍後當我準備轉換foo
時。
(2)聽起來很棒,但我找不出一個可行的解決方案。
// index.ts
declare module 'foo' {
function fooFunction(options: any): any
}
不工作,並拋出Cannot redeclare block-scoped variable 'fooFunction'
我該怎麼辦呢?是否有文檔中有我正在嘗試做的示例和/或關於聲明合併以及如何使用namespace/interface/value的更多解釋? 是否有更好的方法逐步過渡到TypeScript?
對於那些可能有同樣問題的人,我選擇使用聲明文件。對於這個例子,文件'foo.d.ts'。所以,現在我有'foo.d.ts'和'foo.js'。轉換'foo時。js'到TS後,聲明文件可能會變得沒有必要,所以打算將其刪除 –