1

在节点中,我可以通过设置exportsobject 的属性来定义这样的模块:

模块.js

exports.fun = function (val) {
    console.log(val);
};

并要求它使用var module = require('module')in 和使用该module.fun()功能。

是否可以像这样在 TypeScript 中定义模块:

模块.ts

exports.fun = function (val :string) {
    console.log(val);
};

然后使用类似节点的语法将模块导入其他文件,例如,import module = require('module.ts')以便它编译为 nodejs 但是,如果现在我module.fun()在某个.ts文件中使用,如果参数与模块中指定的类型不匹配,它应该给我一个错误.ts 文件。


我怎样才能在打字稿中做到这一点?

4

2 回答 2

2

是的,可以使用真正的 js 语法。您收到错误,因为您使用的import关键字期望导入的文件使用该export关键字。如果你想要 jsexports.foo语法,你应该使用var而不是 import。以下将编译/工作得很好:

var module = require('module.ts')
于 2013-10-09T12:28:50.160 回答
1

您所描述的基本上正是 TypeScript 中的外部模块是如何工作的。

例如:

动物.ts

export class Animal {
    constructor(public name: string) { }
}

export function somethingElse() { /* etc */ }

Zoo.ts

import a = require('./Animals');
var lion = new a.Animal('Lion'); // Typechecked
console.log(lion.name);

在 node.js 中编译--module commonjs并运行 zoo.js。

于 2013-10-08T16:54:33.473 回答