【问题标题】:how can i import meteor-roles in typescript?如何在打字稿中导入流星角色?
【发布时间】:2016-08-28 02:03:11
【问题描述】:

我正在使用 angular2-meteor 0.5.4 和 angular2 beta17 编写一个带有 typescript 的 angular2-meteor 应用程序。

我使用accounts-passwordmeteor 包和angular2-meteor-accounts-ui 进行ui 表示。

我还安装了流星包alanning:roles

现在我需要在 typescript 中导入 Roles,但我没有这样做,因为它不包含 typescript 定义文件。

我在谷歌上搜索,我找到了https://github.com/meteor-typescript/meteor-typescript-libs 包括角色在内的许多包的哪些容器类型脚本定义。

这是要走的路吗?我错过了什么吗?

因为我是流星和打字稿的新手,所以我需要保证我走的是正确的道路。

谢谢!

【问题讨论】:

标签: meteor typescript meteor-accounts


【解决方案1】:

像这样导入你的角色

import { Roles } from 'meteor/alanning:roles';

接下来,您需要添加/更新您的自定义类型文件(在我的例子中是 meteor.d.ts,由 Meteor 自动加载)

declare module "meteor/alanning:roles" {
  export module Roles {
    function createRole(roleName: string): string;
    function deleteRole(roleName: string): void;
    function addUsersToRoles(users: any, roles: any, groups?: string): void;
    function removeUsersFromRoles(users: any, roles: any): void;
    function userIsInRole(user: any, roles: any): boolean;  //user can be user ID or user object
    function getRolesForUser(userId: string): string[];
    function getAllRoles(): Mongo.Cursor<RolesDAO>;
    function getUsersInRole(roleName: string): Mongo.Cursor<RolesDAO>;
    var GLOBAL_GROUP: string;
  }
}

【讨论】:

  • 而不是写评论//user can be user ID or user object 你应该在函数签名中定义它。毕竟这就是 TypeScript 的用途。
【解决方案2】:

有一种更简单的方法可以在 typescript 中导入流星包。大部分类型都在这里定义

https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/meteor

安装已定义类型的 NPM 模块。

meteor npm install --save @types/meteor-roles

导入模块中的类型

import { } from '@types/meteor-roles';

现在,您可以将 Roles 类型用于 addUsersToRoles() 等方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 2017-07-31
    • 2021-07-23
    • 2020-04-18
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多