2017-04-05 19 views
1

一個簡單的類:我的參數如何「不符合console.log的任何簽名」?

export class Logger { 
    constructor(private name: string) {} 

    debug(...args: any[]) { 
    console.debug(...args) 
    } 

    log(...args: any[]) { 
    console.log(...args) 
    } 
} 

據我知道,我可以通過從字面上什麼console.logconsole.debug,怎麼讓我越來越:

 
src/app/logging.ts(6,5): error TS2346: Supplied parameters do not match any signature of call target. 
src/app/logging.ts(10,5): error TS2346: Supplied parameters do not match any signature of call target. 

.apply(args)作品,但隨後...args語法有什麼意義?

我正在使用TypeScript 2.2.2版。

回答

1

console.log被定義爲

log(message?: any, ...optionalParams: any[]): void; 

嘗試切換到

export class Logger { 
    constructor(private name: string) {} 

    debug(msg?: any, ...args: any[]) { 
    console.debug(msg, ...args) 
    } 

    log(msg?: any, ...args: any[]) { 
    console.log(msg, ...args) 
    } 
} 
+0

這是非常豐富,我想試試。但出於好奇,你怎麼知道'console.log'被定義爲? – Hubro

+1

@Hubro Typescript帶有標準庫的定義。在安裝的打字稿中尋找目錄'lib'。在github上你可以在這裏找到它https://github.com/Microsoft/TypeScript/tree/master/lib和'console.log'特別在這裏https://github.com/Microsoft/TypeScript/blob/master/lib /lib.d.ts#L6472 – mleko

相關問題