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

javascript - การแยกค่าด้วย ES6 พร้อมกับ this ภายในคลาส


ฉันมีฟังก์ชันที่คืนค่าเป็นทูเพิล [number, number, number] ฉันต้องการใช้การแยกค่าเพื่อนำค่าที่คืนมาตั้งให้กับตัวแปรของคลาสของฉันดังนี้:

let [this.a, this.b, this.c] = functionThatReturnsTupleWithThreeNumbers()

แต่นี่ใช้ไม่ได้

คำตอบ #1

เพียงแค่ลบ let ออก แล้วคุณก็พร้อมใช้งานได้เลย:

class Foo {
    a;
    b;
    c;

    bar() {
        [this.a, this.b, this.c] = [1, 2, 3];
    }
}

const foo = new Foo();
foo.bar();

console.log(foo);

ข้อมูลเพิ่มเติมที่นี่

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

คำตอบ #2

คุณจำเป็นต้องมีพร็อพในคลาสของคุณและทำการแยกทูเพิลของคุณออกเป็นพร็อพเหล่านั้น:

class MyClass {
    a: number;
    b: number;
    c: number;

    constructor(tuple: ReadonlyArray<number>) {
        [this.a, this.b, this.c] = tuple;
    }
}