A chave, o par de valor está disponível no texto datilografado? Se sim, como fazer isso. Alguém pode fornecer exemplos de links.
A chave, o par de valor está disponível no texto datilografado? Se sim, como fazer isso. Alguém pode fornecer exemplos de links.
Respostas:
O par de valores-chave está disponível em Typescript?
Sim. Chamado de assinatura de índice :
interface Foo {
[key: string]: Bar;
}
let foo:Foo = {};
Aqui estão as chaves stringe os valores Bar.
Você pode usar um es6 Mappara dicionários adequados, polyfilled porcore-js .
key. Você pode, por exemplo, também escrever este: [countryCode: string]: string. Bom para legibilidade.
A maneira mais simples seria algo como:
var indexedArray: {[key: string]: number}
Uso:
var indexedArray: {[key: string]: number} = {
foo: 2118,
bar: 2118
}
indexedArray['foo'] = 2118;
indexedArray.foo= 2118;
let foo = indexedArray['myKey'];
let bar = indexedArray.myKey;
Bar
O par de valores-chave está disponível em Typescript?
Se você pensar em um C # KeyValuePair <string, string> : Não, mas você mesmo pode definir um facilmente:
interface KeyValuePair {
key: string;
value: string;
}
Uso:
let foo: KeyValuePair = { key: "k", value: "val" };
KeyValuePairnão é uma lista, mas pode ser uma entrada de uma lista. Talvez você esteja procurando um List<>? Consulte stackoverflow.com/questions/23096260/…
Não para o questionador, mas para todos os outros interessados: Veja: Como definir o Mapa Typescript do par de valores-chave. onde a chave é um número e o valor é uma matriz de objetos
A solução é, portanto:
let yourVar: Map<YourKeyType, YourValueType>;
// now you can use it:
yourVar = new Map<YourKeyType, YourValueType>();
yourVar[YourKeyType] = <YourValueType> yourValue;
Felicidades!
Mapdefinido? É específico do ângulo?
Outra maneira simples é usar uma tupla :
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10];
// Access elements
console.log("First: " + x["0"] + " Second: " + x["1"]);
Resultado:
Primeiro: Olá, Segundo: 10
Você também pode considerar o uso Record, como este:
const someArray: Record<string, string>[] = [
{'first': 'one'},
{'second': 'two'}
];
Ou escreva algo assim:
const someArray: {key: string, value: string}[] = [
{key: 'first', value: 'one'},
{key: 'second', value: 'two'}
];
um exemplo de par de valores-chave é:
[key: string]: string
você pode colocar qualquer coisa como o valor - se você tiver valores populados programaticamente cujos tipos variam, você pode colocar:
[key: string]: any
embora proceda a seu próprio critério com 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());
Uma maneira concisa é usar uma tupla como par de valores-chave :
const keyVal: [string, string] = ["key", "value"] // explicit type
// or
const keyVal2 = ["key", "value"] as const // inferred type with const assertion
[key, value] tuplas também garantem compatibilidade com objetos JS incorporados:
Object, esp. Object.entries,Object.fromEntriesMap, esp. Map.prototype.entriesenew Map() construtorSet, esp. Set.prototype.entriesVocê pode criar um genérico KeyValuePair tipo para reutilização:
type KeyValuePair<K extends string | number, V = unknown> = [K, V]
const kv: KeyValuePair<string, string> = ["key", "value"]
O próximo TS 4.0 fornece tuplas nomeadas / rotuladas para melhor documentação e suporte de ferramentas:
type KeyValuePairNamed = [key: string, value: string] // add `key` and `value` labels
const [key, val]: KeyValuePairNamed = ["key", "val"] // array destructuring for convenience