ค้นหาเว็บไซต์

คู่คีย์-ค่าใช้ได้ใน 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.fromEntries
  • Map โดยเฉพาะ Map.prototype.entries และตัวสร้าง new Map()
  • Set, โดยเฉพาะ Set.prototype.entries

สนามเด็กเล่น

คำตอบ #8

ตัวอย่างของคู่คีย์-ค่า คือ:

[key: string]: string

คุณสามารถใส่อะไรก็ได้เป็นค่า แน่นอน

บทความที่เกี่ยวข้อง