首页 > 解决方案 > 有人可以向我解释一下 Typescript 中这个表达式的结果/想法吗?

问题描述

谁能向我解释这个表达(详细)?它有什么作用?是什么!!意思?

const foo = useState(props.index ? !!props.formikContext.values.foobar?.[props.index]?.foofoo: false);

标签: typescriptexpression

解决方案


忘记 useState 函数,只关注表达式。

let result = props.index ? !!props.formikContext.values.foobar?. 
[props.index]?.foofoo: false;

表示如果 props.index 不为 null/0/false/undefined,则结果等于

!!props.formikContext.values.foobar?.[props.index]?.foofoo.

!可以将数据转换为布尔类型并将其反转。

!!可以将数据转换为布尔类型,但不能反转。

let a = 0;
let b = !a;
let c = !!a;
console.log(b, c);  // b equal true, c equal false

? 在 typescript 中使用意味着此属性是可选的。

let data: {a?: string, b: string} = {b: "abc"};
// now a is optional ,if we want get length of a.
let len = data.a?.length;

推荐阅读