gpt4 book ai didi

typescript - 扩展 'generic' TypeScript 接口(interface)

转载 作者:行者123 更新时间:2023-12-03 09:40:10 25 4
gpt4 key购买 nike

考虑以下 TS 定义:

type GenericPropsWithChildren<T> = T & { children?: ReactNode };

type 没有问题,但我想知道是否有一个 interface 等效项?显然,可以将泛型 向下传递到 接口(interface)中,尽管这不是我所追求的,e。例如:

interface GenericPropsWithChildren<T> {
children?: ReactNode;
myProps: T; // not desired
}

这里的示例是在 React 代码的上下文中,但潜在的问题是基本的 TS。

最佳答案

接口(interface)的成员必须在声明时已知,在扩展中使用泛型类型参数违反了这条规则。所以没有办法创建等效的通用接口(interface)。

如果您已经知道类型参数,您实际上可以在接口(interface)中继承类型别名。只要所有成员在声明时都是已知的,就允许:

import { ReactNode } from 'react'

type GenericPropsWithChildren<T> = T & { children?: ReactNode };

interface Concrete extends GenericPropsWithChildren<{ p: string }> {

}

Playground Link

关于typescript - 扩展 'generic' TypeScript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59370163/

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