gpt4 book ai didi

typescript - 如何从 TypeScript 中的对象数组创建类型?

转载 作者:行者123 更新时间:2023-12-05 09:35:04 26 4
gpt4 key购买 nike

给定一个像这样的 countries 数组:

const countries = [
{ name: "Australia", code: "AU" },
{ name: "Japan", code: "JP" },
{ name: "Norway", code: "NO" },
{ name: "Russian Federation", code: "RU" }
];

生成以下类型的最简单方法是什么?

type CountryCodes = "" | "AU" | "JP" | "NO" | "RU";

注意:多了一个空字符串。

最佳答案

虽然这个函数从JS的角度来说是没用的。它能够将代码统一为一种类型。

function createCountries<T extends string>(
contries: { name: string; code: T }[],
): { name: string; code: T }[] {
return contries;
}

const countries = createCountries([
{ name: "Australia", code: "AU" },
{ name: "Japan", code: "JP" },
{ name: "Norway", code: "NO" },
{ name: "Russian Federation", code: "RU" }
]);

type CountryCodes = "" | (typeof countries)[number]["code"]; // "" | "AU" | "JP" | "NO" | "RU";

// Example - How to use the type
function getCountryByCode(code: CountryCode): Country | undefined {
return countries.find(country => country.code == code);
}

国家的类型:

{
name: string;
code: "AU" | "JP" | "NO" | "RU";
}[]

没有进一步的信息,这是你能做的最好的...

type Countries = { name: string; code: string }[];

const countriesAbc = [
{ name: "Australia", code: "AU" },
{ name: "Japan", code: "JP" },
{ name: "Norway", code: "NO" },
{ name: "Russian Federation", code: "RU" }
] as const;

const countries: Countries = [...countriesAbc];

type CountryCodes = "" | (typeof countriesAbc)[number]["code"]; // "" | "AU" | "JP" | "NO" | "RU";

关于typescript - 如何从 TypeScript 中的对象数组创建类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66134523/

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