省略从不在打字稿中输入

Ada*_*yai 10 typescript

是否有可能以某种方式省略never打字稿中类型的所有类型?我有一个类型,它采用其他两种类型,并根据值生成第三种类型,并将所有错误或不同值的元素设置为从不:

type MapForeignKeys<TExpandMap extends expandMap, TForeignKeys> = {
    [Prop in keyof TExpandMap]: 
        TExpandMap[Prop] extends { association: 'belongsTo', instance: BaseModel, foreignKey: any } 
        ? TExpandMap[Prop]['instance']['_creationAttributes'] | TExpandMap[Prop]['instance'] | TForeignKeys[TExpandMap[Prop]['foreignKey']] 
        : never 
                       
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此类型时,输出包含应设置为 的属性never,而不是从类型定义中省略这些类型,因此这变得不可用。

可以在此游乐场链接中找到描述我的问题的简单示例

编辑:带有一些可重现问题示例的新链接

Ale*_* L. 15

省略键的可能方法之一是as映射类型中的 using 子句

never您可以通过条件类型生成来过滤掉键

type OmitNever<T> = { [K in keyof T as T[K] extends never ? never : K]: T[K] }
Run Code Online (Sandbox Code Playgroud)

所以在这里我们用键替换具有never值的键never,最终它们被省略。

操场