在meteor-typescript's definition file中,user.profile
对象的输入为any
。
用于扩展用户对象和更改配置文件类型的Typescript方法是什么?
我试过
interface IMyUserProfile {
foo: boolean;
}
namespace Meteor {
export interface User: {
profile: IMyUserProfile
}
}
但是TS只是说“重复标识符”。
我知道我可以直接在定义文件中更改它,但出于显而易见的原因,我宁愿不这样做。
答案 0 :(得分:0)
Typescript支持declaration merging,但是如果你添加一个尚未到位的属性,那将会奏效,例如:
namespace Meteor {
export interface User {
newPropertry: any;
}
}
但是由于User
接口已经有profile
,编译器会抱怨它。
你能做的是:
namespace Meteor {
export interface MyUser extends User {
profile: IMyUserProfile;
}
}
然后将您拥有的用户实例强制转换为Meteor.MyUser
您当然可以从Meteor
命名空间中删除它:
export interface MyUser extends Meteor.User {
profile: IMyUserProfile;
}