在c#中,我们可以通过implicit
或explicit
操作符重载实现自定义类型转换。例如:
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
TypeScript中没有操作符重载 <标题>在c#中,我们可以通过隐式或显式操作符重载实现自定义类型转换
为什么?因为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支持它😄
标题>标题>