Comment puis-je tester si une variable est un tableau de chaîne de caractères dans TypeScript? Quelque chose comme ça:
function f(): ssortingng { var a: ssortingng[] = ["A", "B", "C"]; if (typeof a === "ssortingng[]") { return "Yes" } else { // returns no as it's 'object' return "No" } };
TypeScript.io ici: http://typescript.io/k0ZiJzso0Qg/2
Edit: J’ai mis à jour le texte pour demander un test pour ssortingng []. C’était seulement dans l’exemple de code précédent.
Vous ne pouvez pas tester la ssortingng[]
dans le cas général, mais vous pouvez tester Array
assez facilement, comme dans JavaScript https://stackoverflow.com/a/767492/390330
Si vous voulez spécifiquement pour ssortingng
tableau de ssortingng
, vous pouvez faire quelque chose comme:
if (value instanceof Array) { var somethingIsNotSsortingng = false; value.forEach(function(item){ if(typeof item !== 'ssortingng'){ somethingIsNotSsortingng = true; } }) if(!somethingIsNotSsortingng){ console.log('ssortingng[]!'); } }
Une autre option est Array.isArray ()
if(! Array.isArray(classNames) ){ classNames = [classNames] }
Je sais que cela a été répondu, mais TypeScript a introduit des gardes de type: https://www.typescriptlang.org/docs/handbook/advanced-types.html#typeof-type-guards
Si vous avez un type comme: Object[] | ssortingng[]
Object[] | ssortingng[]
et que faire quelque chose en fonction du type – vous pouvez utiliser ce type de protection:
function isSsortingngArray(value: any): value is ssortingng[] { if (value instanceof Array) { value.forEach(function(item) { // maybe only check first value? if (typeof item !== 'ssortingng') { return false } }) return true } return false } function join(value: ssortingng[] | T[]) { if (isSsortingngArray(value)) { return value.join(',') // value is ssortingng[] here } else { return value.map((x) => x.toSsortingng()).join(',') // value is T[] here } }
Il y a un problème avec un tableau vide en cours de saisie sous forme de ssortingng[]
, mais cela pourrait être correct
Essaye ça:
if (value instanceof Array) { alert('value is Array!'); } else { alert('Not an array'); }
Voici la solution la plus concise à ce jour:
function isArrayOfSsortingng(value: any): value is ssortingng[] { if (Array.isArray(value)) { return value.every(item => typeof item === "ssortingng"); } return false; }
Notez que value.every renverra true
pour un tableau vide. Si vous devez retourner false
pour un tableau vide, vous devriez retourner !!value.length && value.every(...)
au lieu de simplement value.every(...)
.
Il n’y a aucun moyen de vérifier le type d’un tableau vide car il n’y a pas d’informations de type à l’exécution.
il y a un petit problème ici parce que le
if (typeof item !== 'ssortingng') { return false }
n’arrêtera pas le foreach. Donc, la fonction retournera true même si le tableau ne contient aucune valeur de chaîne.
Cela semble être pour moi:
function isSsortingngArray(value: any): value is number[] { if (Object.prototype.toSsortingng.call(value) === '[object Array]') { if (value.length < 1) { return false; } else { return value.every((d: any) => typeof d === 'ssortingng'); } } return false; }
Salutations, Hans