首页 > 解决方案 > 有限类型作为 Dart linting 中的传递参数

问题描述

我想利用飞镖的静态类型优势并将函数的传入类型限制为特定类。在撰写本文时,我还没有想到实现这一目标的设计(如果可能的话)。

希望:

abstract class UpperClass {}

class Class1 extends UpperClass {}

class Class2 extends UpperClass {}

class Class3 {}

void justAcceptSpecific(Type type) => print("doesn't matter");

void main() {
  justAcceptSpecific(Class2); // works
  justAcceptSpecific(Class3); // linting should show wrong type
  justAcceptSpecific(2); // error like here
}

我考虑过使用抽象类,但问题是,我不想传递对象,而只是传递类型。

这将按预期工作(但它通过对象 :/ ):

abstract class UpperClass {}

class Class1 extends UpperClass {}

class Class2 extends UpperClass {}

class Class3 {}

void justAcceptSpecific(UpperClass type) => print("doesn't matter");

void main() {
  justAcceptSpecific(Class2());
  justAcceptSpecific(Class3()); // linting shows wrong type, which is like it should be
}

如果这是相关的,我打算在构造函数中使用它,并且为了简单起见,我只是在这里将我的示例作为函数调用。

标签: dartabstraction

解决方案


推荐阅读