我有这个断言函数,它判断传递的值是否为对象(根据typeof
操作符),但不包括null
:
export function assertIsJavaScriptObjectExceptNull(value: unknown) {
if (typeof value !== 'object' || value === null) {
throw Error('Value is not an object.');
}
}
我想给这个函数加一个assertion signature,这样它在使用时有助于缩小类型范围.在这里使用的"最正确"类型是什么?
export function assertIsJavaScriptObjectExceptNull(value: unknown): asserts value is <type> {
if (typeof value !== 'object' || value === null) {
throw Error('Value is not an object.');
}
}
是{[key: string | number | symbol]: unknown}
、Record<keyof unknown, unknown>
、Object
,还是别的什么?
我正在寻找符合TypeScrip对这种类型应该是什么的理解的类型.我知道TypeScrip有许多设置可以稍微影响这一点,而且JavaScript引擎有怪癖和错误,可能会导致与这种理解相矛盾的结果.因此,可能不存在唯一的最佳答案.