強制對象值的形狀,同時將關鍵幀仍視為常量

我有一個過濾器的映射,定義如下:

type TFiltersNext = { [key: string]: { type: 'date' | 'enum' } };

const filtersNext: TFiltersNext = {
  foo: { type: 'date' }
};

我想在這樣的類型中定義有效的篩選器名稱:

type TFilterNameNext = keyof typeof filtersNext;

但是,這不起作用,因為此測試不會引起問題:

const filterName: TFilterNameNext = 'bar';

正如我們所看到的,bar不是一個有效的篩選器名稱。

I recreated this in TS Playground here - https://www.typescriptlang.org/play/?#code/C4TwDgpgBAKgYgSwDbAgJwM4DkIA9hQC8UA3lANoDWEIAXFBsGggHYDmAuvWaJPQOQATAIap+UAD5R+EFgFcAtuIC+UZQG4AUJoDGAexaMoAM2SpMOfPXhn02PAWIlNUE3r3covCAJFi1mhqa3rCIKOhYwgoQlo5Q1CB6xl7gEEkmthYOWvqGBKbhaJHR1mHmxTEORNLG7sL86kA

如果我從const filtersNext: TFiltersNext = {中刪除: TFiltersNext,它是有效的,但我會失去對值形狀的強制執行。

有人知道發生了什么事嗎?

? 最佳回答:

使用satisfies關鍵字:

type TFiltersNext = { [key: string]: { type: 'date' | 'enum' } };

const filtersNext = {
  foo: { type: 'date' }
} satisfies TFiltersNext;

type TFilterNameNext = keyof typeof filtersNext;
const filterName: TFilterNameNext = 'fooa';

然后您將得到錯誤并獲得顯式密鑰。您不能顯式地告訴對象的類型是:TFiltersNext,因為它的鍵被聲明為任何東西([key: string]

主站蜘蛛池模板: 在线播放一区二区| 精品乱人伦一区二区| 精品国产日韩亚洲一区| 精品成人乱色一区二区| 激情内射日本一区二区三区| 国产一区美女视频| 成人一区专区在线观看| 伊人久久一区二区三区无码| 色一乱一伦一图一区二区精品| 天天视频一区二区三区| 97se色综合一区二区二区| 亚洲电影一区二区三区| 精品一区二区三区中文字幕| 中文字幕一区二区三区在线播放 | 精品一区二区无码AV| 国产激情一区二区三区在线观看| 老熟妇高潮一区二区三区| 中文字幕乱码人妻一区二区三区| 精品一区二区三区在线播放视频| 日韩在线不卡免费视频一区| 亚洲欧洲一区二区| 亚洲一区二区三区国产精品无码| 88国产精品视频一区二区三区| 精品一区二区三区在线成人| 乱码精品一区二区三区| 中字幕一区二区三区乱码| 少妇一晚三次一区二区三区| 无码一区二区波多野结衣播放搜索| 一区二区三区在线观看| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲AV无码一区二区乱子仑| 欧洲精品免费一区二区三区| 色精品一区二区三区| 成人国产一区二区三区| 无码精品国产一区二区三区免费| 人妻少妇精品视频一区二区三区| 国产主播福利一区二区| 精品免费AV一区二区三区| 日韩精品无码一区二区视频| 亚洲国产精品第一区二区| 国产日韩一区二区三区在线播放|