Je pár kľúč-hodnota dostupný v TypeScripte?
Je možné použiť páry kľúč-hodnota v TypeScripte? Ak áno, ako na to? Môže niekto poskytnúť ukážku, príklad alebo odkazy?
Odpoveď č. 1
Je pár kľúč-hodnota dostupný v TypeScripte?
Áno. Nazýva sa indexový podpis:
interface Foo {
[key: string]: number;
}
let foo:Foo = {};
foo['hello'] = 123;
foo = {
'leet': 1337
};
console.log(foo['leet']); // 1337
Tu sú kľúče string a hodnoty number.
Viac
Pre správne slovníky môžete použiť es6 Map, ktorý je polyfillovaný pomocou core-js.
Odpoveď č. 2
Najjednoduchší spôsob by bol niečo ako:
var indexedArray: {[key: string]: number}
Použitie :
var indexedArray: {[key: string]: number} = {
foo: 2118,
bar: 2118
}
indexedArray['foo'] = 2118;
indexedArray.foo= 2118;
let foo = indexedArray['myKey'];
let bar = indexedArray.myKey;
Odpoveď č. 3
Môžete tiež zvážiť použitie Record, napríklad takto:
const someArray: Record<string, string>[] = [
{'first': 'one'},
{'second': 'two'}
];
Alebo napíšte niečo takéto:
const someArray: {key: string, value: string}[] = [
{key: 'first', value: 'one'},
{key: 'second', value: 'two'}
];
Odpoveď č. 4
Je pár kľúč-hodnota dostupný v TypeScripte?
Ak si predstavíte C# KeyValuePair
interface KeyValuePair {
key: string;
value: string;
}
Použitie :
let foo: KeyValuePair = { key: "k", value: "val" };
Odpoveď č. 5
Ďalším jednoduchým spôsobom je použiť n-ticu:
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10];
// Access elements
console.log("First: " + x["0"] + " Second: " + x["1"]);
Výstup :
Prvé: ahoj Druhé: 10
Odpoveď č. 6
Nie pre tazateľa, ale pre všetkých ostatných, ktorí majú záujem: Pozri: Ako definovať Typescript Mapu párov kľúč-hodnota, kde kľúč je číslo a hodnota je pole objektov
Riešenie je teda:
let yourVar: Map<YourKeyType, YourValueType>;
// now you can use it:
yourVar = new Map<YourKeyType, YourValueType>();
yourVar[YourKeyType] = <YourValueType> yourValue;
Na zdravie!
Odpoveď č. 7
Stručný spôsob je použiť n-ticu ako pár kľúč-hodnota:
const keyVal: [string, string] = ["key", "value"] // explicit type
const keyVal2 = ["key", "value"] as const // inferred type with const assertion
const [key, val] = ["key", "val"] // usage with array destructuring
Môžete vytvoriť generický typ KeyValuePair pre opätovné použitie:
type KeyValuePair<K extends PropertyKey, V = unknown> = [K, V]
const kv: KeyValuePair<string, string> = ["key", "value"]
TS 4.0
poskytuje označené prvky n-tice pre lepšiu dokumentáciu a podporu nástrojov:
type KeyValuePairNamed = [key: string, value: string] // "key" and "value" labels
Kompatibilita
Tuple [key, value] zabezpečujú aj kompatibilitu s vstavanými objektmi JS:
Objekt, najmäObject.entries,Object.fromEntriesMap, najmäMap.prototype.entriesa konštruktornew Map()Set, najmäSet.prototype.entries
Detské ihrisko
Odpoveď č. 8
príklad páru kľúč-hodnota je:
[key: string]: stringsamozrejme, hodnotu môžete dať čokoľvek
