两个小问题
来源:8-21 【TS 泛型接口应用】 融合 Vue3 源码 深入泛型接口 【Vue3源码应用】

乔刻力
2021-10-26
问题一:
for (let i=0 ; i<myVechileArray.size();i++){
myvechileArray.get(i).chiculateRent()// 请问这里的chiculateRent能否用 extends keyof来从外部传入呢? keyof应该能找到chiculateRent这个属性,但是怎么获得值,我就不知道了,还有能否对他进行传参
}
问题二:
//老师你的这种写法,如果数组比较大的情况下,for循环每循环一次 都会去使用一次.size()方法,感觉不是很好
for (let i=0 ; i<myVechileArray.size();i++){
...
}
// 建议:
let myVechileArraySize=myVechileArray.size();
for (let i=0 ; i<myVechileArraySize;i++){
...
}
1回答
-
第一个问题答案: 需要用到第9章的某些知识点,所以老师先不做详细解释,你可以先了解下
// 1. 准备一个类
class Student {
constructor(stuname: string) {
this.stuname = stuname
}
static count: string
stuname!: string
study() {
console.log("学生:", this.stuname)
}
eat() {
console.log(this.stuname + "吃饭");
}
}
// 2.获取方法名的联合类型
type MethodName<T> = {
[F in keyof T]: T[F] extends Function ? F : never
}[keyof T]
// 3. 执行方法
function execute<T, CurMethodName extends MethodName<T>>
(methodName: CurMethodName, arr: T[]) {
arr.forEach(item => {
(item as any)[methodName]()
})
}
let students: Array<Student> = []
students.push(new Student("wangwu"))
students.push(new Student("lisi"))
execute("study", students)
// 第二个问题: 这里你说的正确,数组大时需要提出来, 我讲解这几节时,没有去关注这个问题。
012021-10-27
相似问题