我有一個外部JS庫全局參數:如何在定義文件中定義全局TypeScript變量以便導入?
function Thing() { ... }
...
var thing = new Thing();
有一個打字稿定義文件,所以在thing.d.ts
:
declare var thing: ThingStatic;
export default thing;
export interface ThingStatic {
functionOnThing(): ThingFoo;
}
export interface ThingFoo {
... and so on
然後我導入我自己的TS文件這跟:
import thing from 'thing';
import {ThingFoo} from 'thing';
...
const x:ThingFoo = thing.functionOnThing();
的問題是,transpiles到:
const thing_1 = require("thing");
...
thing_1.default.functionOnThing();
這會引發錯誤。我問了一下,在another question和建議是使用:
import * as thing from 'thing';
這不能解決問題 - 它給了我在TS thing.default
但隨後這是不確定的,一旦transpiled到JS。
我認爲thing.d.ts
有什麼問題 - 必須有一種方法來定義可導入的類型化全局參數。
我應該如何編寫thing.d.ts
以便正確表示JS,並且不會包含default
或其他實際不存在的屬性?
嘗試使用字符串名稱聲明 - '''聲明var'thing'。我並不真正理解_Why_這個作品,但我必須在稍微不同的情況下做同樣的事情。(在我的情況下,我從聲明模塊foo切換到聲明模塊'foo') – user1821052