gpt4 book ai didi

javascript - 在 typescript 中返回实体数组的最简洁方法是什么?

转载 作者:行者123 更新时间:2023-11-28 04:22:49 25 4
gpt4 key购买 nike

我正在尝试找出从 ts 函数返回对象数组的最简洁方法。以下函数按预期工作:

    getAuthors1(): Author[]
{
var authors: Author[] =
[
{
FirstName: "John";
MI: "J";
LastName: "Smith";
}
];
return authors;
}

以下函数出错,b/c 似乎 ts 不允许我直接返回对象数组而不是作为变量:

    getAuthors2(): Author[]
{
return Author[] =
[
{
FirstName: "John";
MI: "J";
LastName: "Smith";
}
];
}

由于没有为 MI 提供值,以下函数会出错:

getAuthors3(): Author[]
{
var authors: Author[] =
[
{
FirstName: "John";
LastName: "Smith";
}
];
return authors;
}

问题:

  1. 创建对象初始化数组时,所有对象属性都需要值吗?1a.如果是这种情况,开发人员通常会初始化类中的属性值吗?
  2. 有没有办法直接返回对象数组,类似于上面的 getAuthors2() 示例,而不是必须将其分配给变量然后返回该变量?

最佳答案

如果您定义了一个接口(interface),并创建了一个对象,并告诉 TypeScript 它应该是该类型,它会提示任何缺少的属性,这是理所应当的。

解决这个问题的一种方法是使用映射类型,其中您声明对象的每个属性都是可选的,并像Partial< Author >一样使用它。请参阅official documentation for more info .

您可以立即返回数组,只需删除返回后添加的类型即可:

getAuthors2(): Author[] {
return [
{
FirstName: 'John',
MI: 'J',
LastName: 'Smith',
}
];
}

此外,只要有可能,您应该删除手动定义的类型,例如函数中的返回 Author[]。 TypeScript 将使用 type inference自己弄清楚。

在您的具体示例中,您可以保留定义的返回类型, typescript 将进行所需的检查,或者使用类似于 getAuthors3 中的内容。如果您获取或已经输入了对象,只需将它们放入数组中,TypeScript 将完成剩下的工作:

getAuthors() {
const author: Author = {
FirstName: 'John',
MI: 'J',
LastName: 'Smith',
};
return [author];
}

关于javascript - 在 typescript 中返回实体数组的最简洁方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45309970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com