首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Typescript泛型和字符串文字类型:"OnBlur“类型的参数不能赋值给"T”类型的参数

Typescript泛型和字符串文字类型:"OnBlur"类型的参数不能赋值给"T"类型的参数。

这个问题涉及到Typescript中的泛型和字符串文字类型的概念。

首先,泛型是一种在编程语言中定义函数、类或接口时使用的参数类型。它允许我们在使用这些函数、类或接口时指定具体的类型,从而增加代码的灵活性和重用性。

字符串文字类型是指在Typescript中使用字符串字面量作为类型的一种方式。它允许我们在类型声明中指定具体的字符串值,从而限制变量或参数的取值范围。

在给定的问题中,"OnBlur"是一个字符串文字类型,"T"是一个泛型类型参数。根据问题描述,"OnBlur"类型的参数不能赋值给"T"类型的参数。

这是因为泛型类型参数"T"可以代表任何类型,而"OnBlur"是一个具体的字符串文字类型。在类型系统中,具体的类型不能赋值给泛型类型参数,因为它们不是同一种类型。

如果你想要将"OnBlur"类型的参数赋值给"T"类型的参数,你可以考虑使用字符串文字类型作为泛型类型的约束。这样,泛型类型参数"T"将被限制为只能是字符串文字类型中的一个值。

以下是一个示例代码:

代码语言:txt
复制
type OnBlur = "OnBlur";

function doSomething<T extends OnBlur>(param: T): void {
  // 在这里可以使用泛型类型参数T
  console.log(param);
}

doSomething("OnBlur"); // 正确,"OnBlur"是字符串文字类型
doSomething("Click"); // 错误,"Click"不是字符串文字类型

在上面的示例中,我们使用了extends关键字来约束泛型类型参数T必须是OnBlur类型或其子类型。这样,我们就可以在函数体内使用泛型类型参数T了。

对于这个问题,腾讯云没有特定的产品或链接与之相关。但是,腾讯云提供了广泛的云计算服务,可以满足各种应用场景的需求。你可以访问腾讯云的官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#中类型参数约束)

因为我们数组中存储元素类型是不确定,所以这里我们用到了,其中where T : strut子句约束参数类型T必须为值类型。当然这个程序我们不使用,直接定义Object类型数组也可以。...下面重点说说C#中类型参数约束: 在定义类时,可以对客户端代码能够在实例化类时用于类型参数类型种类施加限制。 如果客户端代码尝试使用某个约束所不允许类型来实例化类,则会产生编译时错误。...T:new() 类型参数必须具有无参数公共构造函数。 当与其他约束一起使用时,new() 约束必须最后指定。 T类型参数必须是指定基类或派生自指定基类。...T类型参数必须是指定接口或实现指定接口。 可以指定多个接口约束。 约束接口也可以是T:U 为 T 提供类型参数必须是为 U 提供参数或派生自为 U 提供参数。...于是,我想能不能写一个简单类,其中里面实现对数值类型加减乘除四则运算,遇到问题是 :where子句后面的约束怎么写,我查看数值类Int32等等,它们基类是Object,如果直接定义一个参数

3.7K60

TypeScript 基本类型使用

typescript 基础类型 下面只介绍一些区别于 JavaScript 特殊类型 Tuple 元组 元组类型允许表示一个已知元素数量类型数组,各元素类型不必相同。...TypeScript里,undefinednull两者各自有自己类型分别叫做undefinednull。...infiniteLoop(): never { while (true) { } } 复制代码 typescript 先来谈谈使用场景 模拟一个场景,当我们要使用一个服务器提供不同数据...正解: 使用 typescript (Generic) 先简单来说一下什么是? ==就是表示一个类型变量,用他来代替某个实际类型用于编程。...后面紧接 表示声明一个表示类型变量,Value: T 表示声明参数T 类型,后面的 : T 表示返回值也是 T 类型

2.5K40
  • java:通过自定义ParameterizedType实现参数类型类型参数替换

    需求说明 如果要动态构造一个参数对象(ParameterizedType),guava提供TypeToken工具可以部分实现这个功能: 比如下面这个例子(来自guava wiki TypeToken...TypeParameter构造一个新ParameterizedType,如果想根据一个已有的ParameterizedType对象替换其中参数,上面的方法并不能实现。...方法实现了参数类型替换。...ParameterizedTypeImpl(TypeToken.of(this).getRawType(), typeArgs, getOwnerType()); } /** * 用指定类型参数替换当前对象类型参数... * 新参数个数与当前对象类型参数个数必须一致, * 如果新参数数组中元素为{@code null}则对应参数不会被替换 * @param newTypeArguments

    4.7K80

    TypeScript 演化史 -- 11】参数默认类型 --strict 编译选项

    TypeScript 2.3 增加了对声明参数默认类型支持,允许为类型类型参数指定默认类型。...接下来看看如何通过参数默认将以下React组件从 JS (JSX)迁移到 TypeScript (TSX): class Greeting extends React.Component {...使用类型定义 Props State 虽然上面的示例编译运行得很好,但是咱们 Component 类型定义不是很精确。...参数默认类型TypeScript 2.3 开始,咱们可以为每个类型参数添加一个默认类型。...使用参数默认值,就可以完全去掉附加可构造类型,并将{}设置为默认类型 type Constructor = new (...args: any[]) => T; 语法稍微复杂一些,

    1.8K30

    CA1005:避免类型参数过多

    值 规则 ID CA1005 类别 设计 修复是中断修复还是非中断修复 重大 原因 外部可见类型具有两个以上类型参数。 默认情况下,此规则仅查看外部可见类型,但这是可配置。...规则说明 类型包含类型参数越多,越难以知道并记住每个类型参数各代表什么。...它通常有一个类型参数,如在 List 中,而在某些情况下有两个类型参数,如在 Dictionary 中。...以易于理解使用语法提供,可减少学习所需时间,并增加新库采用率。..., internal 相关规则 CA1010:集合应实现接口 CA1000:不要在类型中声明静态成员 CA1002:不要公开列表 CA1003:使用事件处理程序实例 另请参阅

    1.1K30

    TypeScript 演化史 — 第十一章】参数默认类型 –strict 编译选项

    image.png TypeScript 2.3 增加了对声明参数默认类型支持,允许为类型类型参数指定默认类型。...接下来看看如何通过参数默认将以下React组件从 JS (JSX)迁移到 TypeScript (TSX): class Greeting extends React.Component {...使用类型定义 Props State 虽然上面的示例编译运行得很好,但是咱们 Component 类型定义不是很精确。...参数默认类型TypeScript 2.3 开始,咱们可以为每个类型参数添加一个默认类型。...使用参数默认值,就可以完全去掉附加可构造类型,并将{}设置为默认类型 type Constructor = new (...args: any[]) => T; 语法稍微复杂一些,

    1.7K20

    根据java编译器规则在Class中搜索匹配指定参数类型方法(GenericMethod)

    因为项目的需要,设计了一个满足特定需要代码自动生成工具。在开发过程中需要根据方法名方法参数类型数组在指定类中根据java编译器规则找到与之最匹配方法。...void test(int a,URL b,T c){ } public void test(T1 a,T2 b,T3 c){ } } 于是对java关于方法匹配方式做了研究...,发现java编译器在匹配方法时,对参数匹配是遵循从左到右顺序来一个个检查,根据这个规则写了下面的方法来实现方法精确匹配。.../** * @param clazz 要搜索类 * @param name 方法名 * @param parameterTypes 希望匹配参数类型数组 *...break; } if (methods.size() > 1) { //如果还有多个方法满足条件,再过滤掉不能直接赋值方法

    1.6K30

    初探 TypeScript函数基本类型接口类内置对象

    : 参数类型返回值类型;在 TypeScript 类型定义中, => 用来表示函数定义,左边是输入类型,需要用括号括起来,右边是输出类型 ES6 箭头函数不一样 可选参数默认参数 TypeScript...result0 = buildName(12, 12); //提示 12 类型参数不能赋值 string let result1 = buildName('Bob') //提示应该有两个参数...,这样我们就能清楚知道使用具体是哪个类型 接口 interface GenericIdentityFn { (arg:T):T } function identity(arg...:T):T { return arg } let myIdentity:GenericIdentityFn = identity 复制代码 类 (=>类学习) 类看上去接口差不多,类使用...new GeneriNumber() 复制代码 类有两个部分:静态部分实例部分,类指实例部分,所以静态属性不能使用这个类型,定义接口来描述约束条件 约束 interface

    7.3K31

    Typescript 使用日志(干货)

    表示是一个类型在定义时并不确定,需要在调用时候才能确定类型,主要包含以下几个知识点: •型函数•类•约束 T extends XXX 我们试想一下,如果一个函数,把传入参数直接输出...传入参数可以是任何类型,难道我们需要把每个类型都写一遍? •使用函数重载,得把每个类型都写一遍,不适合。•,用一个类型占位 T 去代替,在使用时指定对应类型即可。...= d2(true); 其实本来很简单,但许多初学 Typescript 同学觉得很难,其实是因为可以结合索引查询符 keyof、索引访问符 T[k] 等写出难以阅读代码,我们来看一下。...兼容 兼容,如果没有用到 T,则两个也是兼容。...•Partial,将 T类型都变为可选。•Exclude,从 T 中剔除可以赋值 U 类型。•Extract,提取 T 中可以赋值 U 类型

    2.5K10

    【Vue3+TypeScript】CRM系统项目搭建之 — 关于拥抱 TypeScript 这件事【上】

    定义⼀个函数或类时,有些情况下⽆法确定其中要使⽤具体类型(返回值、参数、属性类型不能确 定),此时就需要了 举例: 就是,(不⼀定⾮叫 T ),设置后即可在函数中使⽤ T 来表示该类型...: unction test(arg: T): T{ return arg; } // 不指名类型,TS会⾃动推断出来 test(10) // 指名具体类型 test(10) 可以写多个...类中同样可以使⽤: lass MyClass{ prop: T; constructor(prop: T){ this.prop = prop; } } 也可以对范围进⾏约束:...: T): number{ return arg.length; } test(10) // 类型“number”参数不能类型“Demo”参数 test({name:'张三'}) // 类型“...{ name: string; }”参数不能类型“Demo”参数 test('123') test({name:'张三',length:10}

    12110

    TypeScript进阶 之 重难点梳理

    假设 T 是一个类型,那么keyof T产生类型就是 T 属性名称字符串字面量类型构成联合类型(联合类型比较简单,交叉类型对立相似,这里就不做介绍了)。 「注意!...但是注意,「不能应用于类静态成员」 几个简单例子,先感受下 function log(value: T): T { console.log(value); return...如果不指定类型,就在定义之后指定一个默认类型 myLog(1) 「我们也可以把变量理解为函数参数,只不过是另一个维度参数,是代表类型而不是代表值参数。」...p : T; 在上面的条件语句中,infer P 表示待推断函数参数,如果T赋值(param : infer p) => any,则结果是(param: infer P) => any类型参数...never : T; 以上语句意思就是 如果 T赋值 U 类型的话,那么就会返回 never 类型,否则返回 T,最终结果是将 T某些属于 U 类型移除掉 举个栗子: type T00

    3.9K20

    深入浅出 TypeScript

    」给予开发者创造灵活、可重用代码能力。 设计关键目的是「在成员之间提供有意义约束」,这些成员可以是:类实例成员、类方法、函数参数函数返回值。...举例如下: function getItem(params: T): T { return params; // 传入参数类型返回参数类型一致 } 变量 function getArrayLength...(); this.genericProperty.two(); } } 与 new 默认情况下,不能构造,需要「声明为构造函数」。...P : T; 如果 T赋值 (param: infer P) => any,则结果是(param: infer P) => any类型参数 P,否则返回为 T,infer P表示待推断函数参数...也就是说,如果T不能赋值U,则返回该值。如果有多个值不能赋值,则TT是联合类型

    2.9K30

    《现代Typescript高级教程》类型推断

    类型推断 类型推断是 TypeScript 在编译时根据上下文自动推导变量表达式类型。它根据变量赋值、函数返回值、表达式操作等信息来确定变量或表达式最佳类型。 1....最佳公共类型推断 当我们将不同类型值赋一个变量或数组时,TypeScript会根据这些值类型推断出一个最佳公共类型。...上下文类型推断 TypeScript会根据上下文中预期类型推断变量类型。这种上下文可以是函数参数赋值语句等。...类型推断 在使用时,TypeScript会根据传入参数类型推断类型具体类型。...TypeScript根据赋值、返回值、上下文等信息进行类型推断,并在需要时允许手动指定类型。在编写现代化高级TypeScript代码时,深入了解应用类型推断是非常重要一部分。

    15930

    【文末送书】Typescript 使用日志

    表示是一个类型在定义时并不确定,需要在调用时候才能确定类型,主要包含以下几个知识点: •型函数•类•约束 T extends XXX 我们试想一下,如果一个函数,把传入参数直接输出...传入参数可以是任何类型,难道我们需要把每个类型都写一遍? •使用函数重载,得把每个类型都写一遍,不适合。•,用一个类型占位 T 去代替,在使用时指定对应类型即可。...= d2(true); 其实本来很简单,但许多初学 Typescript 同学觉得很难,其实是因为可以结合索引查询符 keyof、索引访问符 T[k] 等写出难以阅读代码,我们来看一下。...兼容 兼容,如果没有用到 T,则两个也是兼容。...•Partial,将 T类型都变为可选。•Exclude,从 T 中剔除可以赋值 U 类型。•Extract,提取 T 中可以赋值 U 类型

    2.9K10

    TypeScript基础常用知识点总结

    TypeScript—函数 10. TypeScript类型推论类型断言 11. TypeScript—枚举 12. TypeScript 13....TypeScript增加功能: 类型批注编译时类型检查、类型推断、接口、枚举、Mixin、编程、元组、Await、类、模块、lambda 函数箭头语法、可选参数以及默认参数等。...; let num: number = u; 而 void 类型变量不能赋值 number 类型变量,下面写编译就会报错: let u: void; let num: number = u; (6...TypeScript 是指在定义函数、接口或类时候,不预先指定具体类型,而在使用时候再指定类型一种特性。...这时候,就派上用场了: function createArray(length: number, value: T): Array { let result: T[] = [];

    4.8K30
    领券