今天在用element-plus写表单的时候,老师在用ref获取组件以后, 下面写的是
const formRef = ref<InstanceType<typeof ElForm>>()
在网上搜了很多也不明白这个InstanceType<type>到底怎么用,以及下面的两种用法有什么区别吗
type PersonType1 = InstanceType<typeof Person>
const p1: PersonType1 = new Person('tom', 22)
type PersonType2 = typeof Person
const p2: PersonType2 = new Person('23', 2)
谢谢各位!! T T
作用是用构造函数的类型推断其实例的类型,InstanceType<new (...args) => T>
的结果就是T
当你定义一个class Person
,同时
Person
typeof Person
Person
所以,InstanceType<typeof Person>
即是类型Person
。
在vue中需要InstanceType<typeof Component>
得到组件实例类型,而不是直接用Component
作为类型,是因为Component
不是class,它只是一个构造函数,他没有声明实例类型。
官方文档看一下:https://www.typescriptlang.org/docs/handbook/utility-types.ht...
InstanceType<Obj>
表示类型为 Obj
对象的实例。
具体到你的用法,InstanceType<typeof Person>
就相当于 Person
类型,所以 p1
没错。
到了 p2
,你将一个 Person
类型的对象赋值给了 typeof Person
类型的对象,所以会报错 类型 "Person" 中缺少属性 "prototype",但类型 "typeof Person" 中需要该属性。ts(2741)
。
将下面的js版的props,改成ts版: vue的 ts的 但是上面这样写报错。 初次使用ts,求教各位老师。
如函数参数type,它的值只能为default、primary、danger、warning中的一个
前端大佬们 谁知道 WebStorm Compile TypeScript 选项怎么关闭??? 每次不小心点击之后 TS 文件直接全部编译 JS文件 每次都要一个个删除 百度 魔法(Google)
type 和 interface 都可以定义对象,二者到底有何区别?
topAncestorElement 的类型是 call 的返回值 undefined; 我希望使用 [].find.call 这种写法,要怎么修改呢? as unknown as HTMLElement 这样断言就行了。之前没注意看提示...
TS应该怎么学习?在实际项目中又应该怎么使用TS? 公司的项目开发要使用vue3和TS,写vue3倒是会,但是不会写TS,在网上看TS资料也是看了个大概。具体的使用不太会用,请问学习TS应该是什么步骤去学习,在项目中用TS该怎么用,需要注意什么点,求告知,求指导 看了CSDN上的文章