在打字稿中使用 matb33:collection-hooks

using matb33:collection-hooks in typescript

我正在创建一个 Angular2-Meteor 应用程序,从社交教程开始。我正在尝试使用 alanning:roles 和 matb33:collection-hooks 来实现用户角色。该解决方案将类似于提议的 。唯一的区别是 Angular 2 需要角色和集合挂钩的打字稿定义。 我找到了 meteor-typescript-libs,它有一个似乎有效的角色定义。但是,我发现的唯一收集挂钩资源是 typed-meteor-collection-hooks。我尝试通过 copy/pasting 将文件引用 index.d.ts 到我的项目中,但我仍然收到以下错误:

server/imports/accounts.ts (30, 14): Property 'after' does not exist on type 'Collection < User >'.

在以下行:

Meteor.users.after.insert(function (userId, doc) {    
if (doc.profile.type === "basic") {
    Roles.addUsersToRoles(doc._id, [ROLES.Basic])
} else if (doc.profile.type === "admin") {
    Roles.addUsersToRoles(doc._id, [ROLES.Admin])
} else if (doc.profile.type === "manager") {
    Roles.addUsersToRoles(doc._id, [ROLES.Manager])
}});

我是打字稿的新手,我不清楚应该如何为 Meteor 包实现类型定义。显然,我的做法是错误的。有没有人对 Meteor-Angular2 中的角色和收集挂钩有任何经验?

更新:似乎 Meteor.users.after.insert() 代码在插入用户后正在执行,尽管有错误。我正在继续开发,但希望能找到消除错误的解决方案。

你试过从 npm 安装 typings 吗?

https://www.npmjs.com/package/@types/meteor-collection-hooks

别忘了添加到您的 tsconfig "types" 数组中,例如:

"types": [
  "@types/meteor-collection-hooks"
]