首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeScript函数能否独占使用unoin?

TypeScript函数能否独占使用unoin?
EN

Stack Overflow用户
提问于 2022-07-02 01:21:07
回答 1查看 34关注 0票数 0

我理解类型文本使用结构类型(鸭子类型),所以下面的代码是有效的

代码语言:javascript
运行
复制
interface Teacher {
  age: number
  salary: number
}
interface Student {
  age: number
  classes: string
}

type Person = Teacher | Student

function getAge(person: Person) {
  return person.age
}

getAge({age: 34, salary: 1000}) // ok
getAge({age: 16, classes: '5-4'}) // ok
getAge({age: 20, salary: 1000, classes: '5-4'})  // Should be error but type checker success

如何编写函数签名以防止getAge({age: 20, salary: 1000, classes: '5-4'})

EN

回答 1

Stack Overflow用户

发布于 2022-07-02 01:58:43

看看在打字记录文档中受到歧视的工会。

https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions

这样,您的代码应该如下所示:

代码语言:javascript
运行
复制
interface Teacher {
  kind: 'teacher';
  age: number;
  salary: number;
}
interface Student {
  kind: 'student';
  age: number;
  classes: string;
}

type Person = Teacher | Student;

function getAge(person: Person) {
  return person.age;
}

getAge({ kind:"teacher", age: 34, salary: 1000 }); // ok
getAge({ kind: "student", age: 16, classes: '5-4' }); // ok
getAge({ kind: "teacher", age: 20, salary: 1000, classes: '5-4' }); // now throws error
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72835839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档