¿El par clave, valor está disponible en mecanografiado? Si es así, cómo hacerlo. ¿Alguien puede proporcionar ejemplos de enlaces de ejemplo?
¿El par clave, valor está disponible en mecanografiado? Si es así, cómo hacerlo. ¿Alguien puede proporcionar ejemplos de enlaces de ejemplo?
Respuestas:
¿El par clave-valor está disponible en TypeScript?
Si. Llamado una firma de índice :
interface Foo {
[key: string]: Bar;
}
let foo:Foo = {};
Aquí están las claves stringy los valores Bar.
Se puede utilizar un es6 Mappara los diccionarios adecuados, polyfilled porcore-js .
key. Puede, por ejemplo, también escribir lo siguiente: [countryCode: string]: string. Agradable por la legibilidad.
La forma más sencilla sería 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
¿El par clave-valor está disponible en TypeScript?
Si piensa en un C # KeyValuePair <string, string> : No, pero puede definir uno fácilmente:
interface KeyValuePair {
key: string;
value: string;
}
Uso:
let foo: KeyValuePair = { key: "k", value: "val" };
KeyValuePairno es una lista, pero podría ser una entrada de una lista. ¿Quizás estás buscando un List<>? Ver stackoverflow.com/questions/23096260/…
No para el interrogador, sino para todos los demás interesados: ver: Cómo definir el mapa de TypeScript del par clave-valor. donde la clave es un número y el valor es una matriz de objetos
Por tanto, la solución es:
let yourVar: Map<YourKeyType, YourValueType>;
// now you can use it:
yourVar = new Map<YourKeyType, YourValueType>();
yourVar[YourKeyType] = <YourValueType> yourValue;
¡Salud!
Mapdefine? ¿Es específico de Angular?
Otra forma sencilla es utilizar una tupla :
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10];
// Access elements
console.log("First: " + x["0"] + " Second: " + x["1"]);
Salida:
Primero: hola Segundo: 10
También puede considerar usar Record, así:
const someArray: Record<string, string>[] = [
{'first': 'one'},
{'second': 'two'}
];
O escribe algo como esto:
const someArray: {key: string, value: string}[] = [
{key: 'first', value: 'one'},
{key: 'second', value: 'two'}
];
un ejemplo de un par clave-valor es:
[key: string]: string
puede poner cualquier cosa como valor; si ha completado programáticamente valores cuyos tipos varían, puede poner:
[key: string]: any
aunque proceda a su propia discreción con 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());
Una forma concisa es usar una tupla como par clave-valor :
const keyVal: [string, string] = ["key", "value"] // explicit type
// or
const keyVal2 = ["key", "value"] as const // inferred type with const assertion
[key, value] Las tuplas también garantizan la compatibilidad con los objetos integrados de JS:
Object, esp. Object.entries,Object.fromEntriesMap, esp. Map.prototype.entriesy new Map()constructorSet, esp. Set.prototype.entriesPuede crear un KeyValuePairtipo genérico para su reutilización:
type KeyValuePair<K extends string | number, V = unknown> = [K, V]
const kv: KeyValuePair<string, string> = ["key", "value"]
El próximo TS 4.0 proporciona tuplas con nombre / etiqueta para una mejor documentación y soporte de herramientas:
type KeyValuePairNamed = [key: string, value: string] // add `key` and `value` labels
const [key, val]: KeyValuePairNamed = ["key", "val"] // array destructuring for convenience