typescript:读取节点js中的类装饰器文件

时间:2018-06-10 16:09:32

标签: javascript node.js angular typescript decorator

我已经创建了一个类装饰器来读取角度组件的权限。

decorator.ts

function permissions(object: { [key: 'read' | 'write' | 'update' | 'delete']: string }[]) {
    return (ctor: Function) => {
        console.log(JSON.stringify(object));
    }
}

components.ts

// employee.component.ts
@permissions([{ read: 'read-unique-id' }])
@Component({
    selector: 'app-employee',
    templateUrl: './app-employee.component.html',
    styleUrls: ['./app-employee.component.css']
})
class Employee {
    constructor() { }
}

// employee-details.component.ts
@permissions([{ read: 'read-unique-id' }, { write: 'write-unique-id' }])
@Component({
    selector: 'app-employee-details',
    templateUrl: './app-employee-details.component.html',
    styleUrls: ['./app-employee-details.component.css']
})
class EmployeeDetails {
    constructor() { }
}

我应该通过在编译期间读取类名以及decorator的权限详细信息来创建文件。只是生成以下文件的命令。

示例: Permissions.ts

class Permissions {
    static EMPLOYEE_READ = 'read-unique-id';
    static EMPLOYEE_DETAILS_READ = 'read-unique-id';
    static EMPLOYEE_DETAILS_WRITE = 'write-unique-id';
}

我相信我应该创建一个Node JS应用程序来读取所有文件并检查@permissions decorator并生成上述文件。这是对的吗?

如果是这样,有人可以帮我实现这一目标。阅读所有component.ts文件并获取权限详细信息,或者是否有其他方法可以实现相同的目的。

  

更新:我应该通过 decorator 阅读 component.ts 的权限详细信息,并在 Node JS的帮助下生成 Permissions.ts app。

1 个答案:

答案 0 :(得分:0)

更简单且类型安全的方法是向相反方向移动并使用一组常量而不是字符串,例如与enum

enum Permissions {
    EMPLOYEE_READ = 'read-unique-id';
    ...
}

...

@permissions([{ read: Permissions.EMPLOYEE_READ }, ...}])

包含常量的模块也可以在后端应用程序中重用。