[英]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.