La paire clé / valeur est-elle disponible en typographie? Si oui, comment faire cela. Quelqu'un peut-il fournir des exemples de liens.
La paire clé / valeur est-elle disponible en typographie? Si oui, comment faire cela. Quelqu'un peut-il fournir des exemples de liens.
Réponses:
La paire clé-valeur est-elle disponible dans Typescript?
Oui. Appelé une signature d'index :
interface Foo {
[key: string]: Bar;
}
let foo:Foo = {};
Voici les clés stringet les valeurs Bar.
Vous pouvez utiliser un es6 Mappour les dictionnaires appropriés, rempli parcore-js .
key. Vous pouvez, par exemple, écrire aussi ceci: [countryCode: string]: string. Bien pour la lisibilité.
Le moyen le plus simple serait quelque chose comme:
var indexedArray: {[key: string]: number}
Usage:
var indexedArray: {[key: string]: number} = {
foo: 2118,
bar: 2118
}
indexedArray['foo'] = 2118;
indexedArray.foo= 2118;
let foo = indexedArray['myKey'];
let bar = indexedArray.myKey;
Bar
La paire clé-valeur est-elle disponible dans Typescript?
Si vous pensez à un C # KeyValuePair <string, string> : Non, mais vous pouvez facilement en définir un vous-même:
interface KeyValuePair {
key: string;
value: string;
}
Usage:
let foo: KeyValuePair = { key: "k", value: "val" };
KeyValuePairn'est pas une liste, mais cela pourrait être une entrée d'une liste. Vous cherchez peut-être un List<>? Voir stackoverflow.com/questions/23096260/…
Pas pour le questionneur, mais pour tous les autres, qui sont intéressés: Voir: Comment définir la carte Typescript de la paire clé / valeur. où key est un nombre et valeur est un tableau d'objets
La solution est donc:
let yourVar: Map<YourKeyType, YourValueType>;
// now you can use it:
yourVar = new Map<YourKeyType, YourValueType>();
yourVar[YourKeyType] = <YourValueType> yourValue;
À votre santé!
Mapdéfini? Est-ce spécifique à Angular?
Un autre moyen simple consiste à utiliser un tuple :
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10];
// Access elements
console.log("First: " + x["0"] + " Second: " + x["1"]);
Production:
Premier: bonjour Deuxième: 10
Vous pouvez également envisager d'utiliser Record, comme ceci:
const someArray: Record<string, string>[] = [
{'first': 'one'},
{'second': 'two'}
];
Ou écrivez quelque chose comme ceci:
const someArray: {key: string, value: string}[] = [
{key: 'first', value: 'one'},
{key: 'second', value: 'two'}
];
un exemple de paire clé / valeur est:
[key: string]: string
vous pouvez mettre n'importe quoi comme valeur - si vous avez des valeurs renseignées par programme dont les types varient, vous pouvez mettre:
[key: string]: any
mais procédez à votre propre discrétion avec any:)
class Pair<T1, T2> {
private key: T1;
private value: T2;
constructor(key: T1, value: T2) {
this.key = key;
this.value = value;
}
getKey() {
return this.key;
}
getValue() {
return this.value;
}
}
const myPair = new Pair<string, number>('test', 123);
console.log(myPair.getKey(), myPair.getValue());
Une manière concise consiste à utiliser un tuple comme paire clé-valeur :
const keyVal: [string, string] = ["key", "value"] // explicit type
// or
const keyVal2 = ["key", "value"] as const // inferred type with const assertion
[key, value] Les tuples garantissent également la compatibilité avec les objets intégrés JS:
Object, esp. Object.entries,Object.fromEntriesMap, esp. Map.prototype.entriesetnew Map() constructeurSet, esp. Set.prototype.entriesVous pouvez créer un générique KeyValuePair type pour la réutilisation:
type KeyValuePair<K extends string | number, V = unknown> = [K, V]
const kv: KeyValuePair<string, string> = ["key", "value"]
La prochaine TS 4.0 fournit des tuples nommés / étiquetés pour une meilleure documentation et un meilleur support d'outillage:
type KeyValuePairNamed = [key: string, value: string] // add `key` and `value` labels
const [key, val]: KeyValuePairNamed = ["key", "val"] // array destructuring for convenience