typescript - 对数组的每个项目的 TypeScript 断言
问题描述
interface Converter<T = Buffer> {
name: string;
uuid: CUUID;
decode: (value: Buffer) => T;
}
type Converters = ReadonlyArray<Converter<any>>;
但对于我的用例,我需要使用const
断言强制转换该数组中的每个项目:
const infoConverter = {
name: "info",
uuid: "180a",
decode: (v: Buffer) => v.toString()
} as const;
const pressureConverter = {
name: "pressure",
uuid: "1810",
decode: (v: Buffer) => v.readInt32BE(0)
} as const;
const converters = [infoConverter, pressureConverter];
我不介意这样做,但我正在编写一个库,并且该库的用户正在提供该数组。因此,为了使库正常工作,我必须要求用户在使用const
它时使用断言,这不是最佳的。
const
对我来说,如果可以只向库提供他们的数据并且我可以自动进行断言,那就太好了。
所以我有这门课
class Service<C extends Converters> {
private converters?: Converters;
constructor(converters?: C) {
this.converters = converters;
}
}
我想知道是否有办法可以做这样的事情:
class Service<C extends Converters> {
private converters?: EveryItemIsAConst<Converters>;
constructor(converters?: C) {
this.converters = converters as EveryItemIsAConst<C>;
}
}
用户可以做
const infoConverter = {
name: "info",
uuid: "180a",
decode: (v: Buffer) => v.toString()
};
const pressureConverter = {
name: "pressure",
uuid: "1810",
decode: (v: Buffer) => v.readInt32BE(0)
};
const converters = [infoConverter, pressureConverter];
const service = new Service(converters)
并且EveryItemIsAConst
将确保as const
应用于converters
数组中的每个项目。
解决方案
推荐阅读
- javascript - Material UI Slider 组件,鼠标释放时更新状态,同时实时滑动
- amazon-web-services - 用于 S3 传输的 AWS Lambda 跨账户密钥和角色使用
- c# - 使用字符串的 C# 计算器
- ruby-on-rails - 在 API 错误处理期间输出的 jbuilder 语法不正确
- assembly - 为什么16位指令不能访问通用寄存器的高位寄存器
- android - 子集合请求(Firestore、Coroutine)
- python - 错误:包“对象检测”需要不同的 Python:2.7.12 不在“>3.6”中
- mysql - 将 SQL WHERE 查询转换为 JOIN
- python-3.x - PIL 调整大小过滤器与其整数表示之间的映射是什么?
- php - 在 Wordpress 结帐页面上收集电子邮件(适用于 Mailchimp 受众)