我在WebStorm 2016.2.2中將js文件轉換爲ts。TS2339:屬性不存在類型
我有下面的代碼片段:
///<reference path="./typings/globals/node/index.d.ts" />
global.base_dir = __dirname;
global.abs_path = function(path) {
return global.base_dir + path;
};
global.include = function(file) {
return require(global.abs_path('/' + file));
};
base_dir
,abs_path
和include
產生的錯誤:
TS2339:房產 'base_dir' 不上類型存在 '全球'
TS2339:屬性'abs_path'在類型'Global'上不存在
TS2339:房產「包括」不上型存在「全球」
所以我加入他們「全局」界面如下:
///<reference path="./typings/globals/node/index.d.ts" />
declare namespace NodeJS{
interface Global {
base_dir: string;
abs_path: (path: string) => string;
include: (file: string) => string;
}
}
global.base_dir = __dirname;
global.abs_path = function(path) {
return global.base_dir + path;
};
global.include = function(file) {
return require(global.abs_path('/' + file));
};
它沒有消除這些錯誤。
然後,我繼續轉換文件的其餘部分,我不得不進口來自同時表達Request
和Response
,所以我增加了以下內容:
///<reference path="./typings/modules/express/index.d.ts" />
import {Request, Response} from "~express/lib/express";
所以現在整個片段是這樣的:
///<reference path="./typings/globals/node/index.d.ts" />
///<reference path="./typings/modules/express/index.d.ts" />
import {Request, Response} from "~express/lib/express";
declare namespace NodeJS{
interface Global {
base_dir: string;
abs_path: (path: string) => string;
include: (file: string) => string;
}
}
global.base_dir = __dirname;
global.abs_path = function(path) {
return global.base_dir + path;
};
global.include = function(file) {
return require(global.abs_path('/' + file));
};
不幸的是,在添加import
語句返回TS2339錯誤,所以我又堅持:
TS2339:房產「base_dir」上類型不存在「全球」
TS2339:房產「絕對路徑」不上鍵入「全球」
TS2339存在:住宅「包括」不上類型存在'全球'
順便說一句,沒有什麼特別與此錯誤。我試圖從其他模塊導入,併產生相同的錯誤。它發生在我至少有一個import
聲明
有人知道我該如何解決它?
任何幫助將深深感激!
請參閱https://github.com/Microsoft/TypeScript/issues/1574 – lena
@lena謝謝,這正是我的問題,它在這個鏈接中非常清楚。你可以把它寫成答案,我會將其標記爲接受的答案。非常感謝你! – Alon