Если вам нужно назвать членов кортежа, вам лучше использовать интерфейс.
Если вы действительно хотите получить кортеж, вы можете сделать это, но вам понадобится конструктор кортежа, который будет действовать как базовый класс.Кортежи во время выполнения - это просто массивы в javascript, так что мы действительно хотим ввести псевдоним для конструктора Array
, так что вы действительно наследуете Array
:
const tupleConstructor: new (...p: [string, string]) => [string, string] = Array as any;
class Field extends tupleConstructor{
constructor(...p: [string, string]) {
super(...p);
(this as any).__proto__ = Field.prototype; // fix for inheriting arrays
}
get firstName() { return this[0]; }
get lastName() { return this[1];}
}
let a = new Field("1", "1");
let [a0, a1] = a;
console.log(`0: ${a0}`);
console.log(`1: ${a1}`);
let { firstName, lastName} = a;
console.log(`firstName: ${firstName}`);
console.log(`lastName: ${lastName}`);