interfaceNodeConfig{appName: string;port: number;}classNodeAppBuilder{privateconfiguration: NodeConfig={appName:"NodeApp",port: 3000,};privateupdateConfig<KeyextendskeyofNodeConfig>(key: Key,value: NodeConfig[Key]){this.configuration[key]=value;}config(config: Partial<NodeConfig>){typeNodeConfigKey=keyofNodeConfig;for(constkeyofObject.keys(config)asNodeConfigKey[]){constupdateValue=config[key];if(updateValue===undefined){continue;}this.updateConfig(key,updateValue);}returnthis;}}// `Partial<NodeConfig>`` allows us to provide only a part of the// NodeConfig interface.newNodeAppBuilder().config({appName:"ToDoApp"});