typescript - 是否可以在 Typescript 中构造一个允许对象但不允许错误的类型?
问题描述
我正在尝试在记录器中修复一个奇怪的角落案例,其中的调用log({ info: 'information' })
按预期工作,但log(new Error())
没有。
虽然没有可用的修复方法,但我想重写 log 方法以允许除错误之外的所有对象作为参数。在打字稿中可以吗?
我尝试过使用新的条件类型:
type NotError<T> = T extends Error ? never : T;
log(NotError<object>): void
但这仍然允许调用log(new Error())
没有任何错误或警告。
PS:该错误是由具有不可枚举属性的所有对象引起的,但我们唯一涉及此类对象的用例是错误。
解决方案
问题是它NotError<object>
只会解决object
. 你想要的是使用泛型:
function log<T>(notError: NotError<T>): void {
console.log(notError);
}
更多阅读:https ://www.typescriptlang.org/docs/handbook/generics.html
推荐阅读
- unity3d - 无法从 Unity Hub 安装任何 Unity 版本
- mongodb - 创建 ssh 密钥后,ubuntu vps 上的 MongoDB / Mongod 出现“连接被拒绝”错误
- flutter - Flutter,使用 InitState 方法的问题和使用 setState 的问题
- java - ObjectInputStream 死锁
- ocaml - 如何删除列表中所有出现的项目?
- python - 我有以下问题。请任何人都可以解释什么是问题?
- r - 从 mclust 包计算 AWE
- android - 更改活动或最小化应用程序后在后台运行的音频
- android - 如何初始化 MoPub?
- excel - 如何直接编辑power pivot excel的连接信息?