Cặp khóa, cặp giá trị có sẵn trong bảng chữ không? Nếu có làm thế nào để làm điều đó. Bất cứ ai có thể cung cấp liên kết ví dụ mẫu.
Cặp khóa, cặp giá trị có sẵn trong bảng chữ không? Nếu có làm thế nào để làm điều đó. Bất cứ ai có thể cung cấp liên kết ví dụ mẫu.
Câu trả lời:
Cặp khóa-giá trị có sẵn trong Typecript không?
Đúng. Được gọi là chữ ký chỉ mục :
interface Foo {
[key: string]: Bar;
}
let foo:Foo = {};
Đây là khóa stringvà giá trị là Bar.
Bạn có thể sử dụng es6 Mapcho các từ điển thích hợp, được điền bởicore-js .
key. Bạn có thể, ví dụ, cũng viết này: [countryCode: string]: string. Rất dễ đọc.
Cách đơn giản nhất sẽ là:
var indexedArray: {[key: string]: number}
Sử dụng:
var indexedArray: {[key: string]: number} = {
foo: 2118,
bar: 2118
}
indexedArray['foo'] = 2118;
indexedArray.foo= 2118;
let foo = indexedArray['myKey'];
let bar = indexedArray.myKey;
Bar
Cặp khóa-giá trị có sẵn trong Typecript không?
Nếu bạn nghĩ về C # KeyValuePair <string, string> : Không, nhưng bạn có thể dễ dàng tự mình xác định:
interface KeyValuePair {
key: string;
value: string;
}
Sử dụng:
let foo: KeyValuePair = { key: "k", value: "val" };
KeyValuePairkhông phải là một danh sách, nhưng nó có thể là một mục nhập của một danh sách. Có thể bạn đang tìm kiếm một List<>? Xem stackoverflow.com/questions/23096260/…
Không dành cho người hỏi, mà dành cho tất cả những người khác, những người quan tâm: Xem: Cách xác định Bản đồ phân loại của cặp giá trị khóa. trong đó khóa là một số và giá trị là một mảng đối tượng
Do đó, giải pháp là:
let yourVar: Map<YourKeyType, YourValueType>;
// now you can use it:
yourVar = new Map<YourKeyType, YourValueType>();
yourVar[YourKeyType] = <YourValueType> yourValue;
Chúc mừng!
Mapxác định ở đâu? Nó có dành riêng cho Angular không?
Một cách đơn giản khác là sử dụng tuple :
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10];
// Access elements
console.log("First: " + x["0"] + " Second: " + x["1"]);
Đầu ra:
Thứ nhất: xin chào Thứ hai: 10
Bạn cũng có thể xem xét sử dụng Record, như thế này:
const someArray: Record<string, string>[] = [
{'first': 'one'},
{'second': 'two'}
];
Hoặc viết một cái gì đó như thế này:
const someArray: {key: string, value: string}[] = [
{key: 'first', value: 'one'},
{key: 'second', value: 'two'}
];
một ví dụ về cặp giá trị khóa là:
[key: string]: string
bạn có thể đặt bất kỳ thứ gì làm giá trị - nếu bạn có các giá trị được lập trình điền có các loại khác nhau, bạn có thể đặt:
[key: string]: any
mặc dù tiến hành theo quyết định của riêng bạn với 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());
Một cách ngắn gọn là sử dụng một tuple như cặp khóa-giá trị :
const keyVal: [string, string] = ["key", "value"] // explicit type
// or
const keyVal2 = ["key", "value"] as const // inferred type with const assertion
[key, value] bộ giá trị cũng đảm bảo khả năng tương thích với các đối tượng tích hợp sẵn JS:
Object, đặc biệt. Object.entries,Object.fromEntriesMap, đặc biệt. Map.prototype.entriesvànew Map() xây dựngSet, đặc biệt. Set.prototype.entriesBạn có thể tạo một KeyValuePair để tái sử dụng:
type KeyValuePair<K extends string | number, V = unknown> = [K, V]
const kv: KeyValuePair<string, string> = ["key", "value"]
TS 4.0 sắp tới cung cấp các bộ giá trị được đặt tên / gắn nhãn để hỗ trợ tài liệu và công cụ tốt hơn:
type KeyValuePairNamed = [key: string, value: string] // add `key` and `value` labels
const [key, val]: KeyValuePairNamed = ["key", "val"] // array destructuring for convenience