// 这是类型现有的声明
export function Vector(x: number = 0, y: number = 0, z: number = 0): Vector{
return {x,y,z}
};
declare global {
type Vector = {
x: number;
y: number;
z: number;
Normalized():Vector
Length():number
};
}
我希望他能允许我写
let a = Vector(12,20,0)
let b = Vector(100,0,-50)
console.log("a+b", a+b ) // {112,20,-50}
console.log("a-b", a-b ) // {-88,20,50}
这种自定义类型的相加 改如何定义呢?
==================
用的是ts2lua,在lua中用__add实现了相加的运算。但是ts上不知道该怎么申明,使得它可以像String /Number类型一样相加且静态检查中不报错
我现在只能这样写,但这样肯定是不理想的,希望把as Vector
拿掉
let a = Vector(12,20,0)
let b = Vector(100,0,-50)
let c = a+b as Vector
console.log("取模 a+b", c.Normalized() )
// { 0.90123515922583, 0.16093484986176, -0.40233712465439 }
console.log("长度 a+b", c.Length() )
// 124.27389106325
这个叫 operator overloading, typescript并不支持