关于Dart中generic function type aliases衍生的一个问题


之前Dart里定义一个函数结构可以用

typedef Widget ItemGenerator<T> ({Key? key, required T model});

这样的语法,但是到了新版本Dart静态检查会建议使用

typedef ItemGenerator<T> = Widget Function({Key? key, required T model});

这就会产生我今天犯下一个隐蔽的bug,引入泛型的时候会不小心写成。

typedef ItemGenerator = Widget Function<T>({Key? key, required T model});

能编译通过,但是在实际场景中你无法为你的变量设置正确的泛型,虽然看上去好像是正确的,补充一句,新的写法可以不单单定义回调,还可以定义一个结构,例如:经常用到的JSON格式在Dart中的定义,使其更具语义化!

typedef JsonMap = Map<String, dynamic>;

发表回复

您的电子邮箱地址不会被公开。