У меня есть класс, который принимает параметр буфера массива в конструкторе следующим образом:
class Test {
public constructor(buffer: ArrayBuffer) {
...
}
}
Проблема в том, что тип ArrayBuffer
- довольно маленький интерфейс, который также случайно сопоставляет типизированные массивы (которые не буферы массива). Таким образом, мой класс также может быть построен с типизированным массивом в качестве параметра. Таким образом, оба вызова действительны для компилятора:
new Test(new Float32Array([ 1, 2, 3, 4 ]).buffer); // <-- Correct usage
new Test(new Float32Array([ 1, 2, 3, 4 ])); // <-- Wrong usage
Чтобы предотвратить неправильное использование моего API, я хочу, чтобы компилятор отклонял передачу типизированных массивов конструктору. Кто-нибудь знает маленький трюк, как этого добиться?