在typescript中书写自定义强制转换



在c#中,我们可以通过implicitexplicit操作符重载实现自定义类型转换。例如:

public class A {
public string Name {get; set;}
public static implicit operator A(B b) {
A a = new A();
a.Name = b.PhoneNumber;
return a;
}
}

允许像B b = new B(); A a = b;一样将B转换为A

有没有办法在typescript中做到这一点,使下列给定的类型:

class A {
name?: string | null | undefined;
}
class B {
phoneNumber?: string | null | undefined;
}

B可以通过以下方式强制转换为A:

const b: B = { phoneNumber: "1234" }
const a: A = (A)b

在c#中,我们可以通过隐式或显式操作符重载实现自定义类型转换

TypeScript中没有操作符重载 <标题>

为什么?因为JavaScript中没有操作符重载。TypeScript不喜欢添加JavaScript不支持的运行时特性。

<标题>

选择在类a中创建一个静态方法

class A {
name?: string | null | undefined;
static fromB(value: B): A {
// ... TODO
}
}
class B {
phoneNumber?: string | null | undefined;
}
const b: B = { phoneNumber: "1234" }
const a: A = A.fromB(b)

PS:我更喜欢静态函数而不是操作符重载,即使JavaScript支持它😄

最新更新