typescript 子类型怎么定义

interface People{
  name: string,
  age: number;
  sex: string;
}

const people: People = {
  name: '',
  age: 0,
  sex: ''
}

## 类型A是People的子类型,该怎么定义
function createPeople(obj: A){
  for (const key in obj) {
    people[key] = obj[key]
  }
}

createPeople({
  name: '1',
  age:18,
})
阅读 1.9k
2 个回答

你的目的似乎并不是需要 「子类型」

function createPeople(obj: Partial<People>) {
    for (const key in obj) {
        //@ts-ignoreCase
        people[key as a] = obj[key]
    }
}

People可以看做是一个键值对集合的约束。

提供的代码中遍历了一个受A约束的键值对集合,people[key]=obj[key]告诉我们,obj所包含的键是people所包含的键的子集。

那么A对于键值对集合的约束应当小于等于People对键值对集合的约束。

TS提供Partial<T>,用于返回一个约束小于等于T的约束,因此A应该是Partial<People>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题