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: Nie, ale môžete si ľahko definovať vlastný:

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.fromEntries
  • Map, najmä Map.prototype.entries a konštruktor new Map()
  • Set, najmä Set.prototype.entries

Detské ihrisko

Odpoveď č. 8

príklad páru kľúč-hodnota je:

[key: string]: string

samozrejme, hodnotu môžete dať čokoľvek

Súvisiace články