请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

两个小问题

问题一:

	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)


//   第二个问题: 这里你说的正确,数组大时需要提出来, 我讲解这几节时,没有去关注这个问题。

0 回复 有任何疑惑可以回复我~
  • 提问者 乔刻力 #1
    感谢老师,这样第一个问题看上去更完美了
    回复 有任何疑惑可以回复我~ 2021-10-27 07:25:25

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信