![](/img/trans.png)
[英]How do I provide default values to optional nested props of type Object in typescript + React?
[英]Typescript: Apply default values to optional fields nested in an optional object
我正在制作一個有很多選項的組件庫。 如果未傳入options
object,我需要將objects
值的所有字段設為默認值。 從那里開始,如果未傳入該字段,我需要將options
object 的每個字段設為默認值。
目前我能做的最好的事情是提供一個默認值,如果options
值根本沒有提供以下代碼:
interface Foo {
bar;
options?: {
option1?: string;
option2?: string;
option3?: string;
};
}
function foo({ bar, options = { option1: 'foo', option2: 'bar', option3: 'baz' }) { ... }
這按預期工作。 所有值都是默認值('foo'、'bar' 和 'baz')。 但是,如果我添加一個或多個字段,我將無法正常工作。
所需的輸出/功能:
foo(x);
option1 = 'foo'
option2 = 'bar'
option3 = 'baz'
foo(x, { option1: 'hello world' });
option1 = 'hello world'
option2 = 'bar'
option3 = 'baz'
等等等等。
如果提供了options
object,但未提供特定字段,我如何才能將字段(選項 1、2 和 3)設為默認值? 如果可能,請告訴我是否不鼓勵這樣做。 到目前為止,我只是不知道更好的方法來做到這一點。
正如@AndrewLi 所指出的,go 的最佳方法是將參數傳播到包含默認值的 object 中,如下所示:
interface Options: {
option1?: string;
option2?: string;
option3?: string;
}
function foo(props: { bar: string, options: Options }) {
const {
option1,
option2,
option3
}: Options = {
option1 = 'foo',
option2 = 'bar',
option3 = 'baz',
...props.options
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.