繁体   English   中英

带有所有可选参数的写接口 Typescript

[英]Writing Interface with ALL optional parameters Typescript

考虑一下:

interface TArguments {
    width?: number,
    height?: number
}

interface TSomeFunction {
    someFunction ({width, height}: TArguments): void
}

const someObject: TSomeFunction = {
    someFunction ({width, height}) {
    // do something, no return
    }
}

两个参数都是可选的,这意味着我可以这样调用 someFunction:

 someObject.someFunction() // but it is not passing through

我收到错误消息“预期为 1 arguments,但得到了 0”。

我错过了什么吗? 当所有参数都是可选的时,如何编写接口?

您的错误一定来自不同的地方(或尝试重新启动您的 IDE,这是很多挫折的根源:))。 您的第二种方法看起来是正确的:

const someFunction = ({width, height}: TArguments = {}) => { ... }

这是一个有效的TypeScript 操场链接

编辑您还需要指定参数本身,不仅是它的键,是可选的:

interface TSomeFunction {
    someFunction (arguments?: TArguments): void; // Notice the question mark after the parameter expression
}

// Now you can either add a default value to your function
const someObject: TSomeFunction = {
    someFunction ({width, height}: TArguments = {}) {}
}


// Or leave it optional without specifying a default value
const someObject: TSomeFunction = {
    someFunction ({width, height}?: TArguments) {} // Notice the question mark
}

你的接口不应该关心默认值或解构,因为它们是实现细节。 只需将参数声明为可选,就好像它是一个标量:

interface TSomeFunction {
    someFunction (size? : TArguments): void
}

然后,实现可以定义两者:

const someObject: TSomeFunction = {
    someFunction({ width, height } = {}) {
    // do something, no return
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM