【发布时间】:2019-12-28 01:58:57
【问题描述】:
我有一个类型的参数
((element: any) => Type<any>) | Type<any>
如果它是一个我需要调用它的函数,否则只需按原样使用类型
getType(element: any, type: ((element: any) => Type<any>) | Type<any>): Type<any> {
return isFunctionNotType(type) ? type(element) : type;
}
不幸的是,我不知道如何编写isFunctionNotType 方法。 @angular/core/src/type 中有一个 isType 方法,但是每当我尝试使用它时,我都会在编译过程中收到以下错误
ERROR in C:/Users/xxxxxx/xxxxxx/xxxxxx/dist/xxxxxx/fesm5/angular-utils.js
Module not found: Error: Can't resolve '@angular/core/src/type' in 'C:\Users\xxxxxx\xxxxxx\xxxxxx\dist\xxxxxx\fesm5'
有没有什么方法可以在不必将type 变量分成两部分的情况下使其正常工作?
编辑:我应该指出,因为人们似乎在这里忽略了这一点。在角度Type 扩展Function,并且在运行时您将无法通过instanceof 或类似的方式将它们区分开来。
【问题讨论】:
-
我认为 Angular 不应该成为类型检查的资源,特别是因为您已经在使用 Typescript。要么使用
instanceof运算符,要么使用返回Type is SpecificType的函数进行某种鸭式输入,这将满足编译器的要求。请参阅this question 了解更多信息。
标签: angular typescript