Typescript 可选参数的映射类型
所以,我要寻找的是一种为“args”声明类型的方法 我想知道是否有办法指定args的类型。参数'two'是可选的。如果用户指定参数'two',我希望someFunc将参数设为number,字符串设为其他形式,除了使用union类型外,是否有其他方法可以做到这一点 谢谢。您想要:Typescript 可选参数的映射类型,typescript,typescript-typings,Typescript,Typescript Typings,所以,我要寻找的是一种为“args”声明类型的方法 我想知道是否有办法指定args的类型。参数'two'是可选的。如果用户指定参数'two',我希望someFunc将参数设为number,字符串设为其他形式,除了使用union类型外,是否有其他方法可以做到这一点 谢谢。您想要: interface Foo{ one: string; two?: number; someFunc: (args: string|number) => string } 您可以使用联合而不是接口。一
interface Foo{
one: string;
two?: number;
someFunc: (args: string|number) => string
}
您可以使用联合而不是接口。一个工会成员将有两个所需的if类型编号,并具有适用于
args
的适当类型,工会的另一个成员将有两个可选且类型为从不
,以确保其与另一个工会成员不兼容。您将失去对参数类型的推断,但编译器将验证函数是否具有适当的参数类型
type Foo =
| {one: string, two: number, someFunc(args: string): string}
| {one: string, someFunc(args: number): string}
非常感谢。很好。谢谢你的帮助。谢谢你。
type Foo = {
one: string;
two?: never;
someFunc: (args: number) => string
} | {
one: string;
two: number;
someFunc: (args: string) => string
}
let foo: Foo = {
one: '',
someFunc : (a: string) => a
} // err
let foo2: Foo = {
one: '',
someFunc : (a: number) => a.toString()
} // ok
let foo3: Foo = {
one: '',
two:2,
someFunc : (a: string) => a
} // ok
let foo4: Foo = {
one: '',
two:3
someFunc : (a: number) => a.toString()
} // err