我有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
如何解决?
答案 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节中详细了解相关内容。