คู่คีย์-ค่าใช้ได้ใน TypeScript หรือไม่?
คู่คีย์-ค่าใช้ได้ใน TypeScript หรือไม่? ถ้าได้ ฉันทำอย่างไร? มีใครสามารถให้ตัวอย่าง ตัวอย่างโค้ด หรือ ลิงก์ได้ไหม?
คำตอบ #1
คู่คีย์-ค่าใช้ได้ใน Typescript หรือไม่?
ใช่ เรียกว่าลายเซ็นดัชนี:
interface Foo {
[key: string]: number;
}
let foo:Foo = {};
foo['hello'] = 123;
foo = {
'leet': 1337
};
console.log(foo['leet']); // 1337
ที่นี่คีย์เป็น string และค่าจะเป็น number.
เพิ่มเติม
คุณสามารถใช้ Map ของ es6 สำหรับพจนานุกรมที่เหมาะสม ซึ่งสามารถใช้ polyfill โดย core-js ได้
คำตอบ #2
วิธีที่ง่ายที่สุดอาจเป็นอะไรทำนองนี้:
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;
คำตอบ #3
คุณยังสามารถพิจารณาใช้ Record แบบนี้ได้ด้วย:
const someArray: Record<string, string>[] = [
{'first': 'one'},
{'second': 'two'}
];
หรือลองเขียนอะไรทำนองนี้:
const someArray: {key: string, value: string}[] = [
{key: 'first', value: 'one'},
{key: 'second', value: 'two'}
];
คำตอบ #4
คู่คีย์-ค่าใช้ได้ใน Typescript หรือไม่?
ถ้าคุณคิดถึง C# KeyValuePair
interface KeyValuePair {
key: string;
value: string;
}
การใช้งาน :
let foo: KeyValuePair = { key: "k", value: "val" };
คำตอบ #5
วิธีง่ายอีกวิธีคือการใช้ทูเพิล:
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10];
// Access elements
console.log("First: " + x["0"] + " Second: " + x["1"]);
ผลลัพธ์ :
แรก: สวัสดี สอง: 10
คำตอบ #6
ไม่ใช่สำหรับผู้ถาม แต่สำหรับผู้อื่นที่สนใจ: ดู: วิธีการกำหนด Typescript Map ของคู่คีย์-ค่า ซึ่งคีย์เป็นตัวเลขและค่าคืออาร์เรย์ของวัตถุ
ดังนั้นวิธีแก้ปัญหาคือ:
let yourVar: Map<YourKeyType, YourValueType>;
// now you can use it:
yourVar = new Map<YourKeyType, YourValueType>();
yourVar[YourKeyType] = <YourValueType> yourValue;
ชนแก้ว!
คำตอบ #7
วิธีที่กระชับคือการใช้ทูเพิลเป็นคู่กุญแจ-ค่า:
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
คุณสามารถสร้างประเภท KeyValuePair แบบทั่วไปเพื่อใช้ซ้ำได้:
type KeyValuePair<K extends PropertyKey, V = unknown> = [K, V]
const kv: KeyValuePair<string, string> = ["key", "value"]
TS 4.0
ให้ส่วนของทูเพิลที่มีป้ายกำกับเพื่อการทำเอกสารและการสนับสนุนเครื่องมือที่ดียิ่งขึ้น:
type KeyValuePairNamed = [key: string, value: string] // "key" and "value" labels
ความเข้ากันได้
คู่ [key, value] ยังช่วยให้สามารถใช้งานร่วมกับอ็อบเจ็กต์ภายในของ JS ได้
ObjectโดยเฉพาะObject.entries,Object.fromEntriesMapโดยเฉพาะMap.prototype.entriesและตัวสร้างnew Map()Set, โดยเฉพาะSet.prototype.entries
สนามเด็กเล่น
คำตอบ #8
ตัวอย่างของคู่คีย์-ค่า คือ:
[key: string]: stringคุณสามารถใส่อะไรก็ได้เป็นค่า แน่นอน
