#typescript
Вопрос:
У меня есть экспорт интерфейса из другого пакета, и мне нужно реализовать его с помощью класса. Однако typescript не может автоматически определить тип параметра. Есть ли какой-либо способ автоматически получить параметр метода с помощью ts ?
interface Interface {
hello(param: {a: number}): void
}
class A implements Interface {
hello(param) { // param is any
// how can i get the param type automatically ?
}
}
const B : Interface = {
hello(param) {// {a: number}
}
}
Комментарии:
1. Я не уверен, связано ли это, но typescript позволяет определить другую подпись для класса: пример игровой площадки . Может быть (!) именно по этой причине он хочет, чтобы вы были откровенны
Ответ №1:
https://www.typescriptlang.org/docs/handbook/2/classes.html#cautions упоминает именно этот вопрос. Цитирую непосредственно из документов:
Распространенным источником ошибки является предположение, что предложение implements изменит тип класса — это не так!
interface Checkable {
check(name: string): boolean;
}
class NameChecker implements Checkable {
check(s) {
// Parameter 's' implicitly has an 'any' type.
// Notice no error here
return s.toLowercse() === "ok";
// any
}
}
В этом примере мы, возможно, ожидали, что
s
на тип будет влиятьname: string
параметр проверки. Это не так —implements
предложения не меняют способ проверки тела класса или определения его типа.