Javascript 跨组件强制执行参数值限制
我有多个组件,其参数要限制为特定值。例如(在伪代码中):Javascript 跨组件强制执行参数值限制,javascript,angular,enums,interface,Javascript,Angular,Enums,Interface,我有多个组件,其参数要限制为特定值。例如(在伪代码中): 在这两个组件中,@Input()myParameter应只接受相同的限制值。我不想复制每个组件中允许的值,而是想抽象限制。我该怎么做?我假设它需要枚举或接口,但我不知道如何实现这两种方法。您可以使用类型。在某个地方定义它,可能是一个单独的文件,然后导出它。这与其说是有角度的东西,不如说是打字稿 export type MyType = 'foo' | 'bar' | 'baz' 然后将其导入到要使用它的文件中 import {MyTyp
在这两个组件中,
@Input()myParameter
应只接受相同的限制值。我不想复制每个组件中允许的值,而是想抽象限制。我该怎么做?我假设它需要枚举
或接口
,但我不知道如何实现这两种方法。您可以使用类型。在某个地方定义它,可能是一个单独的文件,然后导出它。这与其说是有角度的东西,不如说是打字稿
export type MyType = 'foo' | 'bar' | 'baz'
然后将其导入到要使用它的文件中
import {MyType} from './path/to/file'
并使用新创建的类型:
@Input() myParameter: MyType
我的路径?这是从哪里来的?:)我猜是打字错误:)我的类型应该在那里是的,修正了。锐利的眼睛!我尝试了您的方法,但当我尝试
[myParameter]=“'aksjdaksjdh'”
时,组件仍然接受该值。我做错了什么?它可能在开发模式下工作,因为它使用JIT编译,而JIT编译不进行类型检查。如果您使用的是Angular CLI,请尝试运行ngbuild--prod
,它应该会失败,因为它使用AOT。顺便说一下,像我这样使用类型
在类型检查方面与原始代码没有什么不同。对于您的代码,它仍然可以在JIT中工作,并且应该在AOT中失败。
@Input() myParameter: MyType