簡體   English   中英

TypeScript Mixins 和構造函數名稱

[英]TypeScript Mixins and Constructor Names

我有這個代碼示例在 TypeScript 中試驗 mixins。 但是,它並沒有返回我所期望的。

它應該給我: User ({"id":3,"name":"Lorenzo Delaurentis"})

相反,我得到: Function ({"id":3,"name":"Lorenzo Delaurentis"})

let Name = Class.constructor.name這行應該給我User ,但事實並非如此。 我在這里遺漏了一些明顯的東西嗎?

type ClassConstructor<T> = new(...args: any[]) => T

function withDebug<C extends ClassConstructor<{
    getDebugValue(): object
}>>(Class: C) {
    return class extends Class {
        constructor(...args: any[]) {
            super(...args)
        }

        debug() {
            let Name = Class.constructor.name
            let value = this.getDebugValue()
            return `${Name} (${JSON.stringify(value)})`
        }
    }
}

class DebugUser {
    constructor(
        private id: number,
        private firstName: string,
        private lastName: string
    ) {}

    getDebugValue() {
        return {
            id: this.id,
            name: `${this.firstName} ${this.lastName}`
        }
    }
}

let User = withDebug(DebugUser)
let user = new User(3, 'Lorenzo', "Delaurentis")
console.log(user.debug())

PS我用tsc mixins --target ES6編譯。 否則,我會收到錯誤消息: error TS2339: Property 'name' does not exist on type 'Function'.

您只需要Class.name Class.constructorFunction

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM