Я отвечаю на свой вопрос, чтобы пометить его как решенный:
Проблема совершенно иная, чем я изначально думал. Как указал jcalz, это действительно дает мне ошибку типа, как и ожидалось:
const s = "hello";
console.log(s.myCoolMethod(123)); // hello123
s.myCoolMethod("oops"); // error, not a number
, но в моем коде потребления у меня было это, not , выдавая ошибку:
somebodysPackage.somebodysFunction().join(", ").myCoolMethod("oops"); // no error
Хотя функция Javascript join () всегда возвращает строку, TypeScript не находит мой метод расширения String, хотя он правильно выполняется Javascript во время выполнения.
Однако приведение результата somebodysFunction в строку[] изменяет это:
(somebodysPackage.somebodysFunction()) as string[]).join(", ").myCoolMethod("oops"); // type error
Теперь TypeScript знает тип ввода для join () и может вывести выходной тип, и моя функция расширения правильно расположена и выдана ошибка типа.
Наконец, установка файлов объявлений типов для somebodysPackage
из npm решила проблему без явного приведения.