gpt4 book ai didi

typescript - Dart - 如何像 TypeScript 一样定义接口(interface)?

转载 作者:行者123 更新时间:2023-12-03 03:05:28 26 4
gpt4 key购买 nike

我来自 Typescript,在 TypeScript 中,我可以像这样定义一个对象的接口(interface):

export interface Locale {
login: {
title: string;
actions: {
submit: string;
forgot: string;
}
}
}

我知道 Dart 已经删除了接口(interface),取而代之的是,所有类都有 implicit interfaces

所以我尝试通过编写来实现我上面提到的接口(interface):

class BaseLoginActionsLocale {
final String submit;
final String forgot;

BaseLoginActionsLocale({this.submit, this.forgot});
}

class BaseLoginLocale {
final String title;
final BaseLoginActionsLocale actions;

BaseLoginLocale({this.title, this.actions});
}

class BaseLocale {
final BaseLoginLocale login;

BaseLocale({this.login});
}

...

final BaseLocale enLocale = BaseLocale(
login: BaseLoginLocale(
title: 'Login',
actions: BaseLoginActionsLocale(
submit: 'Login',
forgot: 'Forgot Password?'
)
)
);

但我觉得样板太多了。

所以我的问题是,是否有更好的方法来实现 int

最佳答案

要将您的所有值传递给 BaseLocale,您可以按如下方式实现它:

class BaseLoginActionsLocale {
final String submit;
final String forgot;

BaseLoginActionsLocale(this.submit, this.forgot);
}

class BaseLoginLocale {
final String title;
final BaseLoginActionsLocale actions;

BaseLoginLocale(this.title, submit, forgot) : actions = new BaseLoginActionsLocale(submit, forgot);
}

class BaseLocale {
final BaseLoginLocale login;

BaseLocale(title, submit, forgot) : login = new BaseLoginLocale(title, submit, forgot);
}

final BaseLocale enLocale = BaseLocale('Login', 'Login', 'Forgot Password?');

请注意,这种方法使 BaseLocale 有责任了解其依赖项的属性(以及通过扩展实现),并且可能被某些人视为反模式...

关于typescript - Dart - 如何像 TypeScript 一样定义接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55502873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com