首页 > 解决方案 > 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;
}

任何人都可以重定向吗?

标签: typescriptinheritance

解决方案


实现这一目标的最简单方法是使用

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))

推荐阅读