определение метода класса машинописного текста с использованием интерфейса

#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 предложения не меняют способ проверки тела класса или определения его типа.