J'ai créé une extension de base sur l'objet Date, et cela fonctionne correctement. Voici mon code:La propriété n'existe pas sur le type 'MyObject' - Extension Typescript
date.extensions.ts
export {}
declare global {
interface Date {
toSQLiteString(): string;
}
}
Date.prototype.toSQLiteString = function() {
let tzo = -this.getTimezoneOffset();
let dif = tzo >= 0 ? '+' : '-';
let pad = function(num) {
let norm = Math.abs(Math.floor(num));
return (norm < 10 ? '0' : '') + norm;
};
return this.getFullYear() +
'-' + pad(this.getMonth() + 1) +
'-' + pad(this.getDate()) +
'T' + pad(this.getHours()) +
':' + pad(this.getMinutes()) +
':' + pad(this.getSeconds()) +
dif + pad(tzo/60) +
':' + pad(tzo % 60);
};
Maintenant, je veux créer un fichier d'extension sur un objet personnalisé, permet de l'appeler MyModel. Cet objet est défini dans un autre fichier et ressemble donc (exemple très simple)
export class MyObject {
id: number = 0;
name: string = ''
}
Maintenant, je veux créer un fichier appelé MyObject.extensions.ts et ont une fonction d'extension, donc j'ai créé cela et le fichier ressemble si
import { MyObject } from './my-object.ts'
export {}
declare global {
interface MyObject {
getIdAndName(): string;
}
}
MyObject.prototype.getIdAndName = function() {
return this.id + ' - ' + this.name;
};
Mais, pour une raison quelconque je reçois une erreur par tapuscrit
Si toutefois, je retire la import
en haut du fichier, l'erreur disparaît, mais je reçois une autre erreur, comme ci-dessous
J'utilise tapuscrit 2.4.2
Tous suggestions très appréciés
Vous ferez probablement avec donner différents noms à l'interface et à la classe. Vous ne pouvez pas modifier les types. Votre classe est une valeur et peut être modifiée. –