我喜欢创建自己的控制台日志。
//-- Creating own console logs for better logging
console.detailed = function(payload) {
return console.log(util.inspect(payload, { showHidden: false, depth: null }))
}
console.notice = function(payload) {
return console.log('\x1b[33m%s\x1b[0m', payload)
}
我只是从打字稿开始,在这里我得到了错误
“控制台”类型上不存在“详细”属性
或
类型“控制台”上不存在属性“通知”。
有人可以帮助我解决上述错误吗?
更新:从萨拉瓦娜的答案中,有人可以用更人性化的方式向我解释这一点
在TypeScript中,就像在ECMAScript 2015中一样,任何包含 顶级导入或导出被视为模块。相反,一个文件 没有任何顶级进出口声明的情况将被视为 脚本的内容在全局范围内可用(因此 到模块)。”如果您的代码在模块内部,则需要 将其包装在全局中
还有
如果您是,则可能还需要将其包装在全局范围内 在模块内部使用它。看到 https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation
答案 0 :(得分:2)
您必须扩展Console
接口以添加新方法:
interface Console {
detailed: (payload: any) => void
}
console.detailed("works");
请注意,如果您的file is a module(即它包含import
或export
语句),则必须declare this in the global scope才能起作用:
例如,如果您的文件是模块:
import * as moment from "moment"; // This makes this file a module
declare global {
interface Console {
detailed: (payload: any) => void
}
}
// Your actual method definition
console.detailed = (payload) => {
console.log("Timestamp:", moment().unix());
console.log(payload);
}
// Usage
console.detailed("works");