React + Typescript领域初学者的常见问题和技巧
创建一个联合类型的常量 Key
const NAME = { HOGE: "hoge", FUGA: "fuga" } as const; keyof typeof NAME // => "HOGE" | "FUGA"
创建常量值的联合类型
typeof NAME[keyof typeof NAME] // => "hoge" | "fuga"
沮丧
const { hoge, piyo } = router.query as { hoge: string; piyo: string; };
强制向下
有危险,但是...
const { hoge, piyo } = router.query as unknown as { hoge: number; piyo: number; };
Material-Extend UI 类型
基本上它是由命名约定“组件名+Props”提供的,所以使用它。
type ExtendsProps = TextFieldProps & { hoge: number; };
使用 Material-UI 属性类型
TextField 的类型TextFieldProps
可以被继承,但是如果你想使用它的 name 属性
type Props = { name: TextFieldProps["name"]; };
常用注释前缀注解注释(FIXME、TODO等)
在 VSCode 中,可以通过设置一个插件如 todo-tree 来高亮显示并在列表中查看。
评论 | 意义 |
---|---|
FIXME: | 有缺陷的代码。我有强烈的意愿去解决它。 |
TODO: | 该怎么办。比 FIXME 弱。要修复的功能。 |
NOTE: | 在强调实现的意图以及为什么要这样写的时候写。 |
HACK: | 我想重构。 |
REVIEW: | 需要审查或查看。 |
WARNING: | 当心。 |
什么是假的
False、undefined、null、NaN、0等,分别为真/假值,为假。
一切请参考 MDN。
// false, undefined, null, NaN, 0などのときは以下のエラーログを出力する if (!hoge) { console.error("hoge がありません"); } console.log(hoge);
突然||这是什么?
一个常见的条件分支OR
。
当左侧为Falsy
时,使用连续计算右侧表达式的特性。
(下面的代码"HOGE"
是Truthy
)
也就是说,如果 hoge 是 Falsy,"HOGE"
可以输出到屏幕上。
const HogeComponent = ({ hoge }) => { return{hoge || "HOGE"}; };
const a1 = false || "hoge"; // f || t returns "hoge" const a2 = "hoge" || false; // t || f returns "hoge"
什么是突然&&?
一个常见的条件分支AND
。
当左侧为Truthy
时,使用连续计算右侧表达式的特性。
也就是说,如果 loading 是 Truthy(页面正在加载),则 Loading 组件打算将其打印到屏幕上。
const HogeComponent = ({ loading, hoge }) => { return ( <> {loading &&} {hoge} > ); };
?和??是什么
可选链 ?.
如果引用为 null(null 或 undefined),则表达式被缩短并返回 undefined 而不是错误。
空合并运算符 ??
如果左侧为空,则返回右侧的值,否则返回左侧的值。
- 如果用户未定义,则返回未定义
- 当 user 中包含的属性 hoge 为 null 或 undefined 时显示“hoge”