5

我有 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

如何解决?

4

1 回答 1

8

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

我已经对此进行了测试:

commons.ts

export interface IUser {
    name: string;
}

应用程序.ts

import commons = module("commons");

interface userAlias extends commons.IUser {
}

class User implements userAlias {
    name: string;
}

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

您可以在TypeScript 语言规范的第 9.4 节中阅读更多相关信息。

于 2013-01-26T12:56:00.580 回答