typescript - typescript - instanceof 数组
问题描述
想知道打字稿是否有任何方法可以通过从基本控件后代派生来实现对象的类型
interface Config {
name: string;
}
interface Input extends Config {
placeholder?: string;
}
interface Select extends Config {
options: Array<Option>;
}
const fields: Array<Config> = [
{ name: 'a', placeholder: 'a'}, // placeholder does not exist in type 'config'
{ name: 'b', options: []} // options does not exist in type 'config'
]
也尝试过类似的东西
interface Config<T> {
name: string;
fieldType: T
}
interface Input extends Config<'input'> {
placeholder?: string;
}
任何人都可以重定向吗?
解决方案
实现这一目标的最简单方法是使用
const fields: Array<Select | Input> = [
{ name: 'a', placeholder: 'a'},
{ name: 'b', options: []}
]
Config
它允许您稍后正确使用父类型
function displayName(config: Config) {
console.log(config.name)
}
fields.forEach(config => displayName(config))
推荐阅读
- wpf - 使用 TransformToTree 时的子节点过滤
- css - 如何将 CSS 伪元素应用于匹配多个类的元素?
- javascript - 如何通过脚本标签执行 /_next/static/xxx.js
- sql - 将时间格式化为 24 小时军用格式
- c# - CLR 存储过程无法连接 SqlConnection 常规连接
- hyperlink - Word 2016 邮件与超链接合并正在将合并字段更改为第一个超链接
- r - 关于传递给 R 中的数学函数的非数字参数的错误
- keras - 为什么 to_categorical 为 0 等于 [1,] 而不是 [1,0]?
- .net-core - Azure Pipelines 托管代理尚不支持 .Net Core 3.1?获取 NETSDK1045
- c# - 使用 JQuery Post 将列表项发送到 ASP.NET 控制器