Tho*_*ark 4 typescript ecmascript-6
我想使用 Map 的键作为方法参数的类型。地图有以下键:
const suffix = new Map<string, string>;
suffix.set("read", "read1");
suffix.set("write", "write1");
suffix.set("delete", "delete1");
suffix.set("admin", "admin1");
Run Code Online (Sandbox Code Playgroud)
目前我正在使用以下静态结构来获取有效的参数值:
getNameExtensionSuffix(type: "read" | "write" | "delete" | "admin"): string {
if(this.suffix.has(type)) {
return this.suffix.get(type);
}
}
Run Code Online (Sandbox Code Playgroud)
如何做到更有活力?我希望能够向地图添加新键,而不必被迫更改方法。
我建议enum为您的地图声明一个可接受的键,因为您希望将其限制为字符串的子集:
enum SuffixKeys {
READ = 'read',
WRITE = 'write',
DELETE = 'delete',
ADMIN = 'admin',
}
const suffix = new Map<SuffixKeys, string>();
suffix.set(SuffixKeys.READ, "read1");
suffix.set(SuffixKeys.WRITE, "write1");
suffix.set(SuffixKeys.DELETE, "delete1");
suffix.set(SuffixKeys.ADMIN, "admin1");
Run Code Online (Sandbox Code Playgroud)
然后,当尝试从地图检索值时,您可以执行以下操作:
getNameExtensionSuffix(type: SuffixKeys): string {
return suffix.get(type);
}
Run Code Online (Sandbox Code Playgroud)
如果您已strictNullChecks启用,您将需要强制返回类型,因为它可能是未定义的:
getNameExtensionSuffix(type: SuffixKeys): string {
return suffix.get(type) || '';
}
Run Code Online (Sandbox Code Playgroud)
...或者你可以告诉 Typescript “我知道我在做什么,它永远不会是未定义的”:
getNameExtensionSuffix(type: SuffixKeys): string {
return suffix.get(type)!;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6488 次 |
| 最近记录: |