Typescript:方法中特定类型的一个或几个参数

问题描述 投票:0回答:1

是否可以像这样在typecrpt中为一个方法指定一个特定类型的参数或多个特定类型的参数:

// args might be an instance
// of class Vector3, 
// for example, {x: 0, y: 1, z: 0 }

// or args might be just three arguments,
// like so (x: number, y: number, z: number)
setPosition(args: SomeType): void {
  // 
}

我知道,我可以做这样的事情(使用元组):

setPosition(Vector3 | [number, number, number]): void {
  // 
}

但是,我需要像这样使用花括号:

setPosition([0, 1, 0]);

是否可以为参数创建类型以安全地像这样使用方法?

setPosition(0, 1, 0);

// or
const vec3 = new Vector3(0, 1, 2);
setPosition(vec3);

感谢您的帮助

typescript
1个回答
0
投票

您可以为此目的使用函数重载:

function setPosition(a: Vector3): void;
function setPosition(a: number, b: number, c: number): void;
function setPosition(...args: [Vector3] | [number, number, number]): void {
  //...
}
© www.soinside.com 2019 - 2024. All rights reserved.