Typescript 可选参数的映射类型

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 } 您可以使用联合而不是接口。一

所以,我要寻找的是一种为“args”声明类型的方法

我想知道是否有办法指定args的类型。参数'two'是可选的。如果用户指定参数'two',我希望someFunc将参数设为number,字符串设为其他形式,除了使用union类型外,是否有其他方法可以做到这一点

谢谢。

您想要:

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