网站搜索

在应用程序中,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