【发布时间】:2019-04-11 05:53:44
【问题描述】:
感谢 Flutter,我开始使用 Dart,我非常喜欢这种语言。
我之前使用过 TypeScript,它提供了一些我以前从未见过的非常酷的功能,我特别喜欢的是 string literal types,它看起来像这样
type Easing = "ease-in" | "ease-out" | "ease-in-out";
function doSomething(easing: Easing) { /* do something */}
doSomething("ease-in"); // OK
doSomething("easy"); // ERROR
在 Dart 中,我发现使用 enums 有时不方便,尤其是在与特定于平台的插件实现交互时。每次我需要为 Android 的 static Strings 或 enums 添加 Dart 接口时,我都会想念字符串文字类型。
其中一个example 来自android_intent 插件(但发生的频率更高):
void _createAlarm() {
final AndroidIntent intent = const AndroidIntent(
action: 'android.intent.action.SET_ALARM',
arguments: <String, dynamic>{
'android.intent.extra.alarm.DAYS': <int>[2, 3, 4, 5, 6],
'android.intent.extra.alarm.HOUR': 21,
'android.intent.extra.alarm.MINUTES': 30,
'android.intent.extra.alarm.SKIP_UI': true,
'android.intent.extra.alarm.MESSAGE': 'Create a Flutter app',
},
);
intent.launch();
}
Dart 中有没有办法让这些“魔术字符串”像 TypeScript 的字符串文字类型一样?
【问题讨论】:
标签: typescript dart