带有TypeScript的可选通用类型

时间:2018-07-15 21:08:00

标签: typescript typescript2.0 tsc

我具有is泛型函数类型:

export type EVCb<T> = (err: any, val?: T) => void;

该类型可以像这样使用:

const v = function(cb: EVCb<boolean>){
   cb(null, true);  // compiles correctly
};

const v = function(cb: EVCb<boolean>){
   cb(null, 'yo');  // does not compile 
};

但是我想知道是否有一种方法可以为错误参数添加optional类型,因为现在它始终是any。像这样的东西:

export type EVCb<T, E?> = (err: E | any, val?: T) => void;

用户会这样使用它:

EVCb<boolean, Error>

或者他们可以选择省略第二个参数,然后执行:

EVCb<boolean>

这有可能吗?

1 个答案:

答案 0 :(得分:4)

如果您提供类型参数的默认值,则它可以是可选的:

<!DOCTYPE html>
<html>
  <head>
    <title>Google Tag Manager</title>
  </head>
  <body>
       <div class="select">
         <select id="sel_box" name="paymentopt">
           <option selected="selected" value>Except Me</option>
           <option value="opt1">My Opt1</option>
           <option value="opt2">My Opt2</option>
           <option value="opt3">My Opt3</option>
         </select>
       </div>
  </body>
</html>