如何在typescript中创建另一个模块的接口别名?

时间:2013-01-26 11:53:43

标签: typescript

我有2个打字稿文件。

commons.d.ts

module "commons" {
    interface IUser {
        name:string;
    }
}

main.ts

import commons = module("commons");
class User implements commons.IUser {
    name:string;
}

由于我会在commons.User中使用main.ts,我想为它创建一个别名。我将代码更改为:

import commons = module("commons");

import UserAlias = commons.IUser;

class User implements UserAlias {
    name:string;
}

但是在编译时会抛出错误:

E:\WORKSPACE\app\typescripts>tsc main.ts
E:/WORKSPACE/app/typescripts/main.ts(3,27): The property 'IUser'
    does not exist on value of type 'commons'
E:/WORKSPACE/app/typescripts/main.ts(3,19): A module cannot be aliased
    to a non-module type

如何解决?

1 个答案:

答案 0 :(得分:3)

要为接口创建别名,可以在本地接口上扩展它:

我用以下方法对此进行了测试:

commons.ts

export interface IUser {
    name: string;
}

app.ts

import commons = module("commons");

interface userAlias extends commons.IUser {
}

class User implements userAlias {
    name: string;
}

我稍微改变了commons.ts因为当你使用外部模块时,它们内部通常没有module声明 - 文件就是模块。 module声明用于内部模块。

您可以在TypeScript language specification的第9.4节中详细了解相关内容。