#typescript
#typescript
Вопрос:
Следующий метод прототипа для строки JavaScript в Typescript 2.0.3:
interface String {
splice(start: number, delCount: number, newSubStr: string): string;
}
String.prototype.splice = function(idx: number, rem: number, str: string): string {
return this.slice(0, idx) str this.slice(idx Math.abs(rem));
};
выдает ошибку:
ошибка TS2339: свойство ‘splice’ не существует для типа ‘String’.
несмотря на мой интерфейс. Кажется, он отлично работает на игровой площадке. Я просто запускаю tsc
этот файл без каких-либо параметров. Почему это не работает?
Комментарии:
1. Я запустил
tsc
(2.0.3
и1.8.10
) файл, содержащий только ваш код, и он отлично работал. Вы уверены, что это все?
Ответ №1:
Кажется, он отлично работает на игровой площадке.
Это потому, что у вас, вероятно, есть import
/ export
в вашем файле. Исправить:
declare global {
interface String {
splice(start: number, delCount: number, newSubStr: string): string;
}
}
String.prototype.splice = function(idx: number, rem: number, str: string): string {
return this.slice(0, idx) str this.slice(idx Math.abs(rem));
};
Еще
Это рассматривается здесь : https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html#modifying-native-types