当前位置: 首页 > 知识库问答 >
问题:

扩展“通用”类型脚本接口

庄兴发
2023-03-14

考虑以下TS定义:

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

type没什么问题,但我想知道是否有一个接口等效?显然,可以将泛型传递到接口中,尽管这不是我想要的,例如:

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

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

共有1个答案

柳志专
2023-03-14

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

如果已经知道类型参数,则可以在接口中实际继承类型别名。只要所有成员在申报时都知道,则允许:

import { ReactNode } from 'react'

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

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

}

运动场连接

 类似资料:
  • 问题内容: 我想为此创建一个扩展名,仅影响… 我了解这些说明是相关的,但不确定如何: 扩展通用类型时,不提供类型参数列表作为扩展定义的一部分。而是在扩展程序的正文中提供原始类型定义的类型参数列表,并且原始类型参数名称用于引用原始定义的类型参数。 基本上,我正在尝试使用此方法: 在没有参数的情况下采取行动…这可能吗? 问题答案: Swift 3.1更新 从Swift 3.1(Xcode 8.3 be

  • 问题内容: public class MyGeneric {} 据我所知,以上示例中的两个子类均有效。我想知道Java如何知道何时在实例化子类时定义超类中给定的类型,以及何时将它们定义为实际的类名(即,它如何知道T,E不是类名)? 旁注,是否允许(即使不常见)对通用类型使用多个字母?如果(由于某些严重的计划错误)类型与现有类冲突,该怎么办? 那会发生什么呢? 编辑:感谢您的及时答复。为了回答我的第

  • 问题内容: Java是否可以让类扩展泛型,以便您可以将方法注入通过代码传递的任何类中?(或者是否有其他方法可以使用Java将方法注入或重写到现有类中?) 我所说的“扩展通用类型”是这样的(类“ Textended GameObject”属于游戏,可能不会更改,并且是未知的,因为它是在运行时(从其他mods)加载到游戏中的): onTick由GameEngine调用,通过这种方式,我可以将每个现有的

  • 我试图编写一个通用的getter函数,给定一个键,该键应该只返回类型字符串| boolean | number。因此,默认值应与返回值的类型相同 这是我尝试过的。 我得到这个错误,不确定是什么错误。 什么可能是“字符串|数字|布尔”的子类型让我感到困惑。它们不是已经是基本类型了吗?

  • 问题内容: 在Java中,我可以从通用超类型进行扩展吗?根据这篇文章,看来我应该能够:http : //www.ibm.com/developerworks/java/library/j-djc05133.html。 但是,当我在应用程序中执行类似操作时,出现以下错误: “无法将类型参数T引用为超类型。” 有谁知道我是否能够从Java中的泛型超型扩展?而且,如果是这样,是否需要特殊的东西来实现这一

  • 当我运行 :(32/0,省略)1100 0001 0111 1110 0000 0000 0000 < li> :(第32页,共1页,略)1100 0001 0111 1110 0000 0000 0000 为什么Javascript计算