【发布时间】:2022-01-14 15:06:52
【问题描述】:
我还在学习打字稿,所以我卡住了。网上也找不到。
我正在使用meteor js,它具有以下模块声明meteor.d.ts:
declare module 'meteor/meteor' {
type global_Error = Error;
module Meteor {
/** User **/
interface UserEmail {
address: string;
verified: boolean;
}
interface User {
_id: string;
username?: string | undefined;
emails?: UserEmail[] | undefined;
createdAt?: Date | undefined;
profile?: any;
services?: any;
}
function user(options?: { fields?: Mongo.FieldSpecifier | undefined }): User | null;
function userId(): string | null;
var users: Mongo.Collection<User>;
/** User **/
}
}
现在我有一些额外的用户字段,所以我想用一些字段扩展模块 Meteor 中的用户界面:
interface UserAdditonal {
field1: string
field2: string
field3: string
}
我该怎么做?我试过这个:
declare module "meteor/meteor" {
module Meteor {
function user(options?: {
fields?: Mongo.FieldSpecifier | undefined
}): (User & userAdditonal) | null
var users: Mongo.Collection<User & userAdditonal>
}
}
这会引发错误meteor.d.ts(56, 13): 'users' was also declared here.,并且也只能在同一个文件中使用。而且它更像是覆盖,而不是扩展
是否可以全局执行,所以我在一个文件中声明它,而所有其他导入“meteor/meteor”的文件在不导入我的文件的情况下获得扩展类型?
非常感谢任何帮助!
【问题讨论】:
标签: typescript meteor