打字稿:功能参数的默认值缺少必需的属性

时间:2019-07-10 18:16:34

标签: typescript

interface IPrintConfig {
    name: string;
    copies: number;
}

function print(config: IPrintConfig = {}) {
    console.log(`Print ${config.copies} on printer ${config.name}`);
}

print();

enter image description here

当什么都没有传递给print()时,我将默认值设为{}。但是print()期望一个类型为IPrintConfig的值,该值包含namecopies属性。我可以通过将这两个属性都设置为可选来解决此问题。是否有另一种方法可以解决此问题而不将其设置为可选

2 个答案:

答案 0 :(得分:3)

选项1

使用#!/bin/bash VAR1="$1" openssl req -x509 -nodes -days $VAR1 -subj /C=AA/ST=AA/L=NONE/O=NONE/OU=NONE/CN=NONE/ -newkey rsa:2048 -keyout /tmp/server.key -out /tmp/server.crt -sha256 -set_serial 0 使接口值可选:

?

选项2

将参数设为可选参数,而不是预定义参数:

interface IPrintConfig {
    name?: string;
    copies?: number;
}

function print(config: IPrintConfig = {}) {
    console.log(`Print ${config.copies} on printer ${config.name}`);
}

选项3

设置默认值:

function print(config?: IPrintConfig) {
  if(config)
    console.log(`Print ${config.copies} on printer ${config.name}`);
  else
    console.log(`No value passed`);
}

选项4

要求将参数传递给函数:

function print(config: IPrintConfig = {name: '', copies: -1}) {
    console.log(`Print ${config.copies} on printer ${config.name}`);
}

答案 1 :(得分:0)

如果您将param设为可选参数,该怎么办?

interface IPrintConfig {
    name: string;
    copies: number;
}

function print(config?: IPrintConfig) {
    config  && console.log(`Print ${config.copies} on printer ${config.name}`);
}

print();
相关问题