【发布时间】:2021-08-27 21:11:35
【问题描述】:
在这里问这个是因为不知道如何正确地表达它以便谷歌理解。
我有一个实用函数可以将字符串中的单词大写,作为第二个参数可以传递一个选项对象:
export type Options = {
onlyFirstWord?: boolean;
separator?: string;
};
const defaultOptions = {
onlyFirstWord: false,
separator: " ",
};
export default function capitalize(
str: string,
options: Options = defaultOptions
) {}
所以第二个参数是可选的,因为我已经为它提供了一个默认值,但是如果我在类型中将属性设为可选,它需要我检查它们是否未定义,即使它们 100% 可以由于默认值,永远不要未定义。但是如果我不将它们设为可选,则在传递选项对象时我必须输入每个属性,否则会出错。
我知道有很多类似的问题,但在这种情况下,除了必须放置感叹号或使用可选链接之外,没有办法告诉 typescript 这些值永远不会未定义吗?它不应该自动找出它们永远不会未定义,因为我为其提供了默认值吗?谢谢,如果这是重复的并且已经回答了,请告诉我。
【问题讨论】:
-
是否必须有 onlyFirstWord 和 separator 可选参数,我的意思是 Options 类型是否在其他地方使用,这些属性是可选的?
标签: javascript typescript types