sindresorhus/type-fest

Jsonify makes Record<string, any> disappear

开放

#667 创建于 2023年8月24日

 (7 条评论) (0 个反应) (0 位负责人)TypeScript (471 个派生)batch import
enhancementhelp wanted

仓库指标

星标
 (12,328 个星标)
PR 合并指标
 (平均合并 3天 5小时) (30 天内合并 11 个 PR)

描述

Here's a TS Playground:

import type { Jsonify } from "type-fest";

type Data = Jsonify<{
  payload: Record<string, any>;
}>;

declare const d: Data;
console.log(d.payload) // <-- Property 'payload' does not exist on type 'JsonifyObject<{}>'.

This feels like a bug to me. It's causing an issue for me in the upcoming version of Remix: https://github.com/remix-run/remix/issues/7246

My current workaround is to change the type to unknown instead of any (https://github.com/edmundhung/conform/pull/272 which will hopefully be merged soon). I think is the proper thing to do, but sometimes that's hard because you may not control the type. I think it's more correct to keep the record around on the type.

贡献者指南