既存のコードベースをjs/react/jsx setupからTypeScriptに変換しています。もちろん、ファイルごとにファイルを作成したいのですが、既存のjsコードベースでTSコンパイラを動作させるアプローチについての質問があります。TypeScriptでインポートされたモジュールのタイプを増やす
私はファイルindex.js
を変換するが、今のところはJavaScriptでfoo.js
を残したい:
// 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)をマージfoo
のカスタム宣言を含むd.tsファイルを追加しようとしましたが、不都合があります
(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に変換すると、宣言ファイルが不要になる可能性があるので、 –