javascript - Există o modalitate de a extinde String într-o nouă clasă în TypeScript?


Mi-ar plăcea să pot crea (sau să extind din String) un tip TypeScript care să se comporte ca String. Să pot atribui valoarea astfel: const object: MyCustomString='some value'

Răspuns #1

Citez documentația despre extends:

Cuvântul cheie extends poate fi folosit pentru a crea subclase din clase personalizate, precum și din obiecte încorporate.

Deci, este autorizat să se creeze subclase ale tipurilor încorporate în ES2015:

class MyString extends String {
    get specialProp() {
        return this + " is special!" 
    }
}

const s = new MyString("abc");
console.log(s.specialProp); // abc is special!

Sau, alt exemplu:

class SourceString extends String {
    constructor(s: string, public translate = false) {
        super(s);
    }
}

const s = new SourceString("abc", true);
console.log(s.translate); // true

Notificare: Instanțele clasei dvs. personalizate nu vor fi primitive string, ci obiecte String:

console.log(typeof s); // "object"
console.log(s instanceof String); // true