gpt4 book ai didi

typescript - 为可以具有不同结构的对象参数定义类型

转载 作者:行者123 更新时间:2023-12-05 08:06:19 24 4
gpt4 key购买 nike

我有一个函数以一个对象作为参数,但传递的对象可以有不同的结构。我怎样才能为参数定义一个或多个类型,而不必将任何对象属性设置为可选(因为这会使整个键入操作的用处大大降低)?

我想做的,但显然行不通,是这样的:

type One = {
a: string
b: string
}

type Two = {
c: string
d: string
}

type Three = {
e: string
}

type OneOfTheseTypes = One | Two | Three

const myGenericFunction = (obj: OneOfTheseTypes) => {...}

附言我刚刚开始使用 TypeScript 迈出我的第一步,所以如果我的想法有误,请原谅我!

编辑:所以该函数返回一个与参数类型相同的对象,当我使用返回的对象(如 returnedObj.a)时,我收到错误消息“Property 'a' does not存在于类型 'OneOfTheseTypes' 上。”和“类型‘二’上不存在属性’a’。”我在 React 中使用 TypeScript,我不知道这是否与它有任何关系。

最佳答案

您问题中的示例是有效的,并且您的示例中没有编译错误。您可以直接使用 generics 轻松解决您的问题:

type One = {
a: string
b: string
}

type Two = {
c: string
d: string
}

type Three = {
e: string
}

const myGenericFunction = <T>(obj: T): T => obj;

const testObject: One = {
a: 'fieldA',
b: 'FieldB'
};

myGenericFunction<One>(testObject);

More information about generics.

关于typescript - 为可以具有不同结构的对象参数定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61319406/

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