2016-10-16 121 views
2

我在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_dirabs_pathinclude產生的錯誤:

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)); 
}; 

它沒有消除這些錯誤。

然後,我繼續轉換文件的其餘部分,我不得不進口來自同時表達RequestResponse,所以我增加了以下內容:

///<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聲明

有人知道我該如何解決它?

任何幫助將深深感激!

+2

請參閱https://github.com/Microsoft/TypeScript/issues/1574 – lena

+0

@lena謝謝,這正是我的問題,它在這個鏈接中非常清楚。你可以把它寫成答案,我會將其標記爲接受的答案。非常感謝你! – Alon

回答

相關問題