[英]How to use Existing typescript namespaced classes as external modules for nodejs
[英]Typescript definitions for namespaced classes
我正在嘗試為我編寫的JavaScript庫編寫打字稿def。 該庫看起來像:
!function() {
var mylib = {};
mylib.Fruit = function() {
// ...
};
mylib.Fruit.SOME_STATIC_PROP = 1;
}();
源由多個串聯的文件組成-在此最小示例中,前一個文件包含前兩行,一個文件包含Fruit
,另一個文件包含最后一行。
fruit.d.ts:
declare module mylib {
class Fruit {
static SOME_STATIC_PROP: number;
}
}
在fruit.js(這又只是上面粘貼的代碼的中間部分)中,Intellisense抱怨:
類型“()=>任何”不能分配給“類型水果”。 類型(()=> any)中缺少屬性'SOME_STATIC_PROP'。
編輯在我的串聯文件中(例如,上面粘貼的內容),我沒有收到該消息。
如果我將fruit.js更改為
function Fruit() { ... }
沒有mylib
命名空間,也沒有錯誤。
有沒有辦法避免在我的個人“類”文件中發生此錯誤,還是應該忽略它們?
我的猜測是您需要更新函數聲明,如下所示:
!function() {
var mylib = {};
mylib.Fruit = function():Fruit {
// ...
};
mylib.Fruit.SOME_STATIC_PROP = 1;
}();
您沒有告訴編譯器函數將返回什么,因此它假定它是'any'並且any沒有屬性SOME_STATIC_PROP,但是Fruit類型確實具有該屬性。
告訴編譯器函數返回的確切類型,應該讓它滿意。
在fruit.js(這又只是上面粘貼的代碼的中間部分)中,Intellisense抱怨
因為這是JavaScript,所以錯誤Type '() => any' is not assignable to type 'typeof Fruit'. Property 'SOME_STATIC_PROP' is missing in type '() => any'.
Type '() => any' is not assignable to type 'typeof Fruit'. Property 'SOME_STATIC_PROP' is missing in type '() => any'.
基於變量的推斷類型。
或者:
.js
文件轉換為.ts
以便您可以使用類型注釋和類型斷言來隨意調整類型 .ts
為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.