打字稿。
有一些课。
一个方法something(...)可以接受多个参数,这在实例化之前是已知的。
// Тип "T" должен описать последовательность типов метода something
class Foo<T> {
#callback: (...args: T[]) => void
constructor(callback: (...args: T[]) => void) {
this.#callback = callback
}
// Как быть с параметрами (a: number, b:string)
something(...args: T[]): void {
this.#callback(...args)
}
}
// Здесь уже известно какие параметры будет принимать метод `Foo.something(...)`,
// и соответственно какие получит `callback`.
const callback = (a: number, b: string): void => {
// ...
}
// Это разумеется не сработает, даже callback не будет соответствовать ожидаемому типу
const cfoo = new Foo<(number | string)>(callback)
cfoo.something(123, 'str')
是否可以按照既定的顺序在其余参数中定义几种类型?
事实证明,这是使用元组完成的。
元组类型描述为:
这就是它的工作原理:
操场