Чи доступний ключ, пара значень у typecript? Якщо так, як це зробити. Хто-небудь може надати зразок прикладних посилань.
Чи доступний ключ, пара значень у typecript? Якщо так, як це зробити. Хто-небудь може надати зразок прикладних посилань.
Відповіді:
Чи доступна пара ключ-значення в Typescript?
Так. Викликається підпис індексу :
interface Foo {
[key: string]: Bar;
}
let foo:Foo = {};
Тут ключі є stringі значення є Bar.
Ви можете використовувати ES6 Mapдля власних словників, polyfilled поcore-js .
key. Ви можете, наприклад, записати його: [countryCode: string]: string. Приємно для читабельності.
Найпростішим способом було б щось на зразок:
var indexedArray: {[key: string]: number}
Використання:
var indexedArray: {[key: string]: number} = {
foo: 2118,
bar: 2118
}
indexedArray['foo'] = 2118;
indexedArray.foo= 2118;
let foo = indexedArray['myKey'];
let bar = indexedArray.myKey;
Bar
Чи доступна пара ключ-значення в Typescript?
Якщо ви думаєте про C # KeyValuePair <string, string> : Ні, але ви можете легко визначити його самостійно:
interface KeyValuePair {
key: string;
value: string;
}
Використання:
let foo: KeyValuePair = { key: "k", value: "val" };
KeyValuePair- це не список, але це може бути запис списку. Можливо, ви шукаєте List<>? Дивіться stackoverflow.com/questions/23096260/…
Не для запитувача, а для всіх інших, хто зацікавлений: Див.: Як визначити карту Typescript для пари ключових значень. де ключ - це число, а значення - це масив об'єктів
Отже, рішення:
let yourVar: Map<YourKeyType, YourValueType>;
// now you can use it:
yourVar = new Map<YourKeyType, YourValueType>();
yourVar[YourKeyType] = <YourValueType> yourValue;
Ура!
Mapвизначено? Це кутово-специфічний?
Ще один простий спосіб - використовувати кортеж :
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10];
// Access elements
console.log("First: " + x["0"] + " Second: " + x["1"]);
Вихід:
Перше: привіт Друге: 10
Ви також можете розглянути таке використання Record:
const someArray: Record<string, string>[] = [
{'first': 'one'},
{'second': 'two'}
];
Або напишіть щось подібне:
const someArray: {key: string, value: string}[] = [
{key: 'first', value: 'one'},
{key: 'second', value: 'two'}
];
Приклад пари ключових значень:
[key: string]: string
ви можете поставити що-небудь як значення - якщо у вас є програмно заповнені значення, типи яких різняться, ви можете поставити:
[key: string]: any
хоча продовжуйте на власний розсуд 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());
Короткий спосіб - використовувати кортеж як пару ключових значень :
const keyVal: [string, string] = ["key", "value"] // explicit type
// or
const keyVal2 = ["key", "value"] as const // inferred type with const assertion
[key, value] кортежі також забезпечують сумісність із вбудованими об'єктами JS:
Object, особливо Object.entries,Object.fromEntriesMap, особливо Map.prototype.entriesі new Map()конструкторSet, особливо Set.prototype.entriesВи можете створити загальний KeyValuePairтип для повторного використання:
type KeyValuePair<K extends string | number, V = unknown> = [K, V]
const kv: KeyValuePair<string, string> = ["key", "value"]
Майбутній TS 4.0 надає названі / марковані кортежі для кращої підтримки документації та інструментарію:
type KeyValuePairNamed = [key: string, value: string] // add `key` and `value` labels
const [key, val]: KeyValuePairNamed = ["key", "val"] // array destructuring for convenience