Dans quoi peut-il y avoir une erreur? Lorsque toutes les classes sont dans le même fichier, l'erreur n'apparaît pas. Mais dès que je place les classes dans des fichiers différents, les erreurs suivantes apparaissent:Si vous séparez les classes dactylographiées par fichiers, une erreur se produit. Comment se peut-il?
/index2.ts(8,13): erreur TS2345: Argument de type « {name: chaîne; valeur: nombre; } 'n'est pas assignable au paramètre de type' ConfigOption | ConfigOption [] '. Tapez '{name: chaîne; valeur: nombre; } 'n'est pas assignable pour taper' ConfigOption [] '. La propriété 'length' est manquante dans le type '{name: string; valeur: nombre; } '.
/index2.ts(14,12): erreur TS2345: Argument de type '{name: string; valeur: chaîne; } [] 'n'est pas assignable au paramètre de type ' ConfigOption [] '. Tapez '{name: chaîne; valeur: chaîne; } 'n'est pas assignable pour taper' ConfigOption '. La propriété 'comment' est manquante dans le type '{name: string; valeur: chaîne; } '. 17:36:36 - Compilation terminée. Surveiller pour le fichier changements.
interface IOption {
name: string;
value?: any;
comment?: string;
}
class ConfigOption {
name: string;
value: any;
comment: string;
constructor(data: IOption) {}
}
type TOptionArray = (IOption | ConfigOption)[];
class Config {
constructor(options?: TOptionArray) {}
push(data: ConfigOption | IOption | TOptionArray) {}
}
// Test example:
const config = new Config;
config.push({
name: 'name',
value: 0
});
new Config([{
name: 'role',
value: 'camelcase(this.element.name)'
}]);
https://www.dropbox.com/s/u0ergcw4pt88oeu/typescriptproblem.zip?dl=0
Mise en page du code par les fichiers:
// config/Config.ts
import IOption from './option/ConfigOption';
import ConfigOption from './option/ConfigOption';
export type TOptionArray = (IOption | ConfigOption)[];
export default class Config {
constructor(options?: TOptionArray) {}
push(data: ConfigOption | IOption | TOptionArray) {}
}
// config/option/ConfigOption.ts
import Config from '../Config';
export interface IOption {
name: string;
value?: any;
comment?: string;
}
export default class ConfigOption {
name: string;
value: any;
comment: string;
constructor(data: IOption) {}
}
// index2.ts
import Config from './config/Config';
const config = new Config;
config.push({
name: 'name',
value: 0
});
new Config([{
name: 'role',
value: 'camelcase(this.element.name)'
}]);
Comment séparez-vous les fichiers? – Aron
@Aron Dans l'archive il y a un exemple où les fichiers sont séparés. –
Je ne veux pas télécharger une archive zip. Veuillez juste poster votre code dans deux blocs. – Aron