在应用程序中,TypeScript 接口通常存储在哪里?
我有一个我这样编写的应用程序:
// File util.ts
class Util {
// ....
// ...
}
export = Util;
// File base.ts
import Util = require('../../Utils/util');
class AdminBase extends Util {
....
isSelectedValue (data: IElement) {
var title = data.text;
var valueString = data.val.toString();
it('Check for ' + data.text, function () {
expect(element(by.id(data.id)).getAttribute("value")).toBe(valueString);
});
}
....
ExamStatusId = {
All: <IEnumElement>{
id: this.examStatusSelectId,
text: 'Exam Status: All',
val: 0
},
Current: <IEnumElement>{
id: this.examStatusSelectId,
text: 'Exam Status: Current',
val: 1
}
}
....
export = AdminBase;
// File page.ts
class ExamPage extends AdminBase {
...
...
}
export = ExamPage;
// File test.ts
import ExamPage = require('./page');
var page = new ExamPage();
describe('Admin Exam Page test', function () {
page.isSelectedValue(page.ExamStatusId.All);
});
这是我拥有的界面:
interface IEnumElement {
elem: string;
text: string;
val: number
}
有人能告诉我,在像这样的 TypeScript 应用程序中,我应该把接口文件放在哪里吗?接口是和定义一起存储的吗,如果是这样,我的应用程序如何引用它们?
答案#1
Typescript 接口可以放在任何你喜欢的地方。任何可以访问这些定义的地方都是可以的。
但这些实际上只是 Typescript 的东西……因为它们是 设计时特性。它们不会被转换/编译成任何 JavaScript 代码。
所以,如果有道理的话,可以把它们放在单独的文件中,或者直接放在实现所在的同一个文件里。没有“必须”的规则...
即将它们放在一个文件中,并观察编译后会发生什么……那个js文件将是(几乎)空的
答案#2
由于你正在使用外部模块,我建议创建一个globals.ts文件,该文件在顶层不包含export语句,并包含你所有的interface声明,这样你就不需要为了获取接口信息而不断进行import。
你可以使用标准的 reference 标签引用这个 globals.ts 文件,例如
/// <reference path="../globals.ts"/>
顺便说一下 如果你的 TypeScript 文件中有以下代码,grunt-ts (https://github.com/grunt-ts/grunt-ts) 可以为你生成这个引用标签:
///ts:ref=globals
