首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambda参数类型语法糖?

Lambda参数类型语法糖?
EN

Stack Overflow用户
提问于 2021-08-05 07:40:27
回答 1查看 44关注 0票数 3

我可以“分解”一个功能组件的道具的类型吗?

这段代码编译得很好。

代码语言:javascript
复制
type DataType = {
  a: string;
  b: string;
};

const ShowA = ({ a }: DataType) => <p>{a}</p>;

但是,这不会:

代码语言:javascript
复制
const Component = () => {
  const data = { a: "foo", b: "bar" };
  <ShowA a={data.a} />;
};

这会导致错误Property 'b' is missing in type '{ a: string; }' but required in type 'DataType'.

我理解这个错误,但是有没有语法可以让我这样做呢?b将始终存在于检索到的数据中,所以将其标记为可选的b?: string感觉是错误的。我希望有一行代码可以替代它:

代码语言:javascript
复制
const ShowA = (props: DataType) => {
  const { a } = props;
  return <p>{a}</p>;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-05 07:51:49

Typescript有一个实用程序类型就可以做到这一点:Pick

代码语言:javascript
复制
type DataType = {
  a: string;
  b: string;
};

type OnlyAType = Pick<DataType, "a"> // { a: string }

const ShowA = ({ a }: Pick<DataType, "a">) => <p>{a}</p>;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68662449

复制
相关文章

相似问题

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