打字稿找不到名字,即使它被引用
Typescript cannot find name even though it is referenced
我有一个 angular 项目正在用打字稿编写。这在 VS 下对我来说效果很好,现在我在 webstorm 下对 Node.JS 进行同样的尝试。
我有一个进度条 class,在 progressor.ts 文件中:
export class Progressor{
public tasks: any;
constructor(){
this.tasks = {};
}
...
}
我有我的主控制器,它使用这个 class:
/// <reference path="../progressor.ts" />
declare var angular: any; // I'm trying to eliminate these...
declare var Papa: any;
declare var $: any;
class MainController{
constructor($scope: any){
$scope.progressor = null;
$scope.filesDropped = function(files, rejectedFiles){
if(!files || !files.length)
return;
$scope.progressor = new Progressor();
// ...
}
};
}
请注意,这不是 Node.JS 代码 - 它只是 Node.JS 项目的一部分。
相对引用路径正确。当我尝试使用以下方式编译它时:
tsc mainController.ts --module amd --target es5
我收到错误消息:找不到名称 Progressor。
我不明白问题出在哪里...到目前为止,我的 Node.JS 项目一直遇到麻烦,我正在考虑为这个项目完全放弃 TS。首先 - 谁能告诉我为什么它不能编译?请注意,我希望每个 TS 文件都单独编译,因此我可以通过 Chrome.
轻松调试它们
如果您 export
编辑了一些东西,您需要 import
才能使用它,而不是 <reference ...
它。
将 <reference
注释替换为 import prog = require('./progressor');
,然后您可以使用例如new prog.Progressor()
.
您可以考虑使用 export = Progressor
,这样从另一个文件导出的对象就是 class 本身而不是容器。
经过一段时间的搜索,我偶然发现了这个:TypeScript Modules。咨询后,我尝试将我的两个 类 放在 module{ } 块中,这解决了问题。对于为什么该语言要求我使用模块来进行多文件使用,我仍然有些困惑……但现在它可以了。
我有一个 angular 项目正在用打字稿编写。这在 VS 下对我来说效果很好,现在我在 webstorm 下对 Node.JS 进行同样的尝试。
我有一个进度条 class,在 progressor.ts 文件中:
export class Progressor{
public tasks: any;
constructor(){
this.tasks = {};
}
...
}
我有我的主控制器,它使用这个 class:
/// <reference path="../progressor.ts" />
declare var angular: any; // I'm trying to eliminate these...
declare var Papa: any;
declare var $: any;
class MainController{
constructor($scope: any){
$scope.progressor = null;
$scope.filesDropped = function(files, rejectedFiles){
if(!files || !files.length)
return;
$scope.progressor = new Progressor();
// ...
}
};
}
请注意,这不是 Node.JS 代码 - 它只是 Node.JS 项目的一部分。
相对引用路径正确。当我尝试使用以下方式编译它时:
tsc mainController.ts --module amd --target es5
我收到错误消息:找不到名称 Progressor。
我不明白问题出在哪里...到目前为止,我的 Node.JS 项目一直遇到麻烦,我正在考虑为这个项目完全放弃 TS。首先 - 谁能告诉我为什么它不能编译?请注意,我希望每个 TS 文件都单独编译,因此我可以通过 Chrome.
轻松调试它们如果您 export
编辑了一些东西,您需要 import
才能使用它,而不是 <reference ...
它。
将 <reference
注释替换为 import prog = require('./progressor');
,然后您可以使用例如new prog.Progressor()
.
您可以考虑使用 export = Progressor
,这样从另一个文件导出的对象就是 class 本身而不是容器。
经过一段时间的搜索,我偶然发现了这个:TypeScript Modules。咨询后,我尝试将我的两个 类 放在 module{ } 块中,这解决了问题。对于为什么该语言要求我使用模块来进行多文件使用,我仍然有些困惑……但现在它可以了。