如何在打字稿中为带参数但不带任何参数的函数类型指定类型保护?

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

函数类型对于参数来说是逆变的,对于返回类型来说是协变的。在这种情况下,如何指定带有扩展

Container
类型的参数的泛型函数类型而不使用
any

type Container<V> = {
  id: string;
  join: (value: V) => void;
};

const process = <V extends Container<unknown>>(processFn: (container: V) => boolean) => {
  // do something with processFn
}

type ExtendedContainer = Container<number> & { status: string; };
const processFn = (container: ExtendedContainer) => {
  return true;
}

process(processFn);

我明白为什么会出错。我不明白的是,如何在不诉诸

any
类型声明中的
processFn
的情况下表达这样的系统? 否则,我如何确保
process
参数通常扩展类型
container
并获取其类型参数?
    

typescript generics contravariance
1个回答
0
投票

Container

打字稿游乐场

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