4

如果我有这样的情况,我会使用Kotlin :interface

interface User {
    val name: String
    val email: String
}

我可以在代码的任何地方编写这样的扩展函数:

fun User.toUserDto(): UserDto {
    TODO()
}

打字稿中,如果我有类似的interface

export default interface User {
    name: string;
    email: string;
}

我怎样才能以类似的方式增加它?这是该语言的最佳实践吗?有没有我不知道的替代方案?

4

2 回答 2

2

您可以像这样增加,但这取决于prototype属性并且没有User.prototype(也没有任何User价值)。

你也可以看到这个很长的讨论。Kotlin/C# 方法被拒绝的解释在这里

于 2021-02-10T19:53:07.580 回答
0

Typescript 中的接口只能描述数据的形状,不能创建它们的实例或改变它们。

要编写接口的扩展功能,您需要在类中实现接口,并在类中添加您需要的任何内容。

export class SomeUserClass implements User {
  name: string;
  email: string;
  
  constructor(name, email) {
    ...
  }

  toUserDto() {
    ...
  }
}
于 2021-02-09T20:21:34.767 回答