gpt4 book ai didi

typescript - 在 Typescript 中,如何定义一个函数类型,允许在必需的参数之前使用任意的前置参数?

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:29 24 4
gpt4 key购买 nike

我想定义一个函数类型,允许在必需参数之前使用任意参数示例:

type Op = (...args, required: A) => void

我希望有以下行为:

const foo:Op = (a.b,c, required: A) => void // this should compile
const foo:Op = (a.b,c:A) => void // this should compile
const foo:Op = (a.b,c) => void // this should not compile

我试过:

type Op = (required:A) => string 

但是这些会引发类型不匹配错误:

let foo: Op = (a, b:A) => {return ""} //error
let foo: Op = (a, required:A) => {return ""} // error

我尝试了其他定义类型的方法希望能走运

type Op = (...args: any[], required:A) => string //error 

interface Op {
(...args: any[], required:A): string //error
}

它们都不起作用。

有没有办法在 Typescript 中做到这一点?还是我在尝试一些概念上不可调和的东西?

最佳答案

我觉得你运气不好。即使做这样的事情......

interface A {
x: number
}

type Op = ((a, b, c, required: A) => string)
| ((a, b, required: A) => string)
| ((a, required: A) => string)
| ((required: A) => string);


let foo: Op = (a, b:A) => "";
let bar: Op = (a, b:number) => ""; // not an error :-(

... 不会工作,因为 missing parameters don't fail the type check .

关于typescript - 在 Typescript 中,如何定义一个函数类型,允许在必需的参数之前使用任意的前置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52298641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com