Bonne journée. Je suis nouveau sur Type Script, en utilisant VSCode.
Obtenir les erreurs suivantes:
erreur TS2322: Le type '() => chaîne' n'est pas assignable au type 'chaîne'.
erreur TS2322: Le type '() => numéro' n'est pas assignable au type 'numéro'.
Le code:
DTO.ts
interface DTO {
getId(): number;
getValue(): string;
}
export = DTO;
LinkedObject.ts
class LinkedObject {
public value: string = "Not Set";
public id: number = 0;
constructor(value?: string, id?: number) {
this.value = value;
this.id = id;
}
}
export = LinkedObject;
J'essaye d'instancier LinkedObject
class en utilisant les méthodes d'interface mentionnées ci-dessus:
TravelClientFormPopulator.ts
class TravelClientFormPopulator {
public populateComboBoxUsingDTOs(dataObjects: Array<DTO>, comboBoxID: string): void {
// Get the combo box
var selectElement = <HTMLSelectElement> document.getElementById(comboBoxID);
// Reset the options
selectElement.options.length = 0;
var linkedObjectsToAdd: LinkedObject[] = new Array<LinkedObject>();
var defaultLinkedObject: LinkedObject = new LinkedObject("Not Selected", 0);
linkedObjectsToAdd.Push(defaultLinkedObject);
for (var i = 0; i < dataObjects.length; i++) {
var value: string = dataObjects[i].getValue; // Error here
var id: number = dataObjects[i].getId; // And here
var linkedObject: LinkedObject = new LinkedObject(value, id);
}
}
}
Toute aide sera grandement appréciée.
Vous manquez de parenthèses:
var value: string = dataObjects[i].getValue();
var id: number = dataObjects[i].getId();
Pour ce que cela vaut, si quelqu'un a ce problème uniquement dans VSCode, il suffit de redémarrer VSCode pour le résoudre. Parfois, Intellisense semble gâcher les importations ou les types.
En relation avec TypeScript: l'argument de type 'RegExpMatchArray' n'est pas assignable au paramètre de type 'chaîne'
vous utilisez simplement le type de variable any et supprimez ces types de problèmes.
code d'erreur :
let accessToken = res;
localStorage.setItem(LocalStorageConstants.TOKEN_KEY, accessToken);
donnée erreur L'argument de type '{}' n'est pas assignable à un paramètre de type 'chaîne'.
code de réussite:
var accessToken:any = res;
localStorage.setItem(LocalStorageConstants.TOKEN_KEY, accessToken);
nous créons une variable de type var, puis utilisons une variable de type any et résolvons ce problème.
any = manipule n'importe quel type de valeur afin de supprimer l'erreur.
Ajoutant également d'autres scénarios où vous pouvez voir ces erreurs
Vérifiez d'abord la version du compilateur, téléchargez le dernier compilateur TypeScript pour prendre en charge les syntaxes ES6.
TypeScript produit toujours une sortie même avec des erreurs de frappe, cela ne bloque pas le développement,
Lorsque vous voyez ces erreurs, recherchez les syntaxes lors de l’initialisation ou lors de l’appel de ces méthodes ou variables,
Vérifiez si les paramètres des fonctions sont d'un type de données incorrect, que vous avez initialisé sous le nom "chaîne" et en affectant un "booléen" ou un "nombre"
Par exemple
1.
private errors: string;
//somewhere in code you assign a boolean value to (string)'errors'
this.errors=true
or
this.error=5
2.
private values: Array<number>;
this.values.Push(value); //Argument of type 'X' is not assignable to parameter of type 'X'
Le message d'erreur ici est parce que les crochets pour l'initialisation du tableau sont manquants. Cela fonctionne même sans cela, mais le code VS alerte en rouge.
private values: Array<number> = [];
this.values.Push(value);
Note:
N'oubliez pas que les transmissions typographiques Javascript sont fonction de la valeur attribuée. TypScript les en informe, mais le code est exécuté même si ces erreurs sont mises en évidence dans le code de VS.
Ex:
var a=2;
typeof(a) // "number"
var a='Ignatius';
typeof(a) // "string"
Je fais angular 2 et TypeScript et je n'avais pas réalisé qu'il y avait un espace dans ma notation de flèche
J'avais .map(key = >
au lieu de .map(key =>
Gardez les yeux ouverts pour les erreurs de syntaxe stupides
Dans mon cas, c’était que j’avais une interface personnalisée appelée Item, mais j’ai importé accidentellement à cause de la saisie semi-automatique, la classe angular Item. Assurez-vous que vous importez du bon paquet.
Ce problème survient lorsque votre compilateur ne comprend pas la différence entre l'opérateur de conversion de la chaîne de type vers Number.
vous pouvez utiliser l'objet Number et transmettre votre valeur pour obtenir les résultats appropriés à l'aide de Number (<<<< ... Nom_variable ...... >>>>)
Bizarrement, dans mon cas, il me manquait l'importation de la classe dont elle se plaignait et mon IDE ne l'a pas détectée.