在Typescript中,我可以这样做:

var xxx : some_type;

if (xxx)
    foo();
else
    bar();

这里xxx将被视为布尔值,无论其类型如何.

我想在函数参数中做同样的事情.我有这个功能:

function foo(b : boolean) { ... }

我希望能够调用foo(xxx),并将xxx视为布尔值,无论其类型如何.但Typescript不允许这样.

我试过这个:

foo(<boolean>xxx);

但Typescript 也不允许这样.

我可以做到:

foo(xxx ? true : false);

但这似乎有点傻.有更好的方法吗?

推荐答案

你可以使用double exclamation sign个技巧,看看哪个Typescript允许,哪个在JavaScript中运行良好:

foo(!!xxx);

或者,将其设定为any

foo(<any>xxx);

Typescript相关问答推荐

如何根据服务响应构建子路由

创建一个通用上下文,允许正确推断其中的子项

等待的R没有用响应对象展开到R

带有微前端的动态React路由问题

使用ngrok解析Angular 时出现HTTP故障

异步动态生成Playwright测试,显示未找到测试

使用`renderToPipeableStream`时如何正确恢复服务器端Apollo缓存?

对数组或REST参数中的多个函数的S参数进行类型判断

如何在typescript中设置对象分配时的键类型和值类型

Express Yup显示所有字段的所有错误

Angular 15使用react 式表单在数组内部创建动态表单数组

迭代通过具有泛型值的映射类型记录

是否可以判断某个类型是否已合并为内部类型?

保护函数调用,以便深度嵌套的对象具有必须与同级属性函数cargument的类型匹配的键

TypeScrip错误:为循环中的对象属性赋值

基于泛型的条件接口键

类型脚本中参数为`T`和`t|unfined`的重载函数

在tabel管理区域react js上设置特定顺序

TypeScript中的这些条件类型映射方法之间有什么区别?

JSX.Element';不可分配给类型';ReactNode';React功能HOC