Typescript-如何在不使用Exclude <>的情况下从通用类型中排除类型?

问题描述 投票:0回答:1

我有一个函数,可以通过将它们字符串化来将不同的值存储到本地存储中,我想限制该函数不能使用Moment对象。语法如下:

public static set<TValue>(
       key: LocalStorageKeyEnum,
       value: TValue,
       ...keySuffixes: string[]
   ) {
       localStorage.setItem(
           LocalStorage.buildKey(key, keySuffixes),
           JSON.stringify(value)
       )
   }

问题是,如果第二个参数是Moment对象,并且我想在编写<TValue>时排除此类型,则该函数将正常工作。有没有办法使用Typescript做到这一点,或者唯一的办法就是在运行时运行检查?我可以使用2种类型,其中第二种是排除Moment类型的属性的类型,像这样]

type Variants = {
   value: TValue,
   date: moment.Moment
}

type ExcludeDate = Exclude {typeof Variants, "date"} 

但是我想知道是否还有另一种方法。谢谢!我是Typescript的新手,所以如果我不太清楚,我感到抱歉。

我有一个函数,可以通过将它们字符串化来将不同的值存储到本地存储中,我想限制该函数不能使用Moment对象。语法如下:...

javascript typescript types
1个回答
1
投票

您可以按条件类型排除类型:

© www.soinside.com 2019 - 2024. All rights reserved.