像打字稿一样在飞镖中创建界面

Creating interface in dart like typescript

我来自 typescript 背景并且是 dart 的新手,在 typescript 中我们能够定义接口并将这些类型附加到具有正确格式的所需变量,例如

interface Answer {
  text: string;
  value: number;
}

interface Question {
  question: string;
  answers: Answer[
}


const questions: Question[] = [
    {
      'question': "What's your fav color?",
      'answers': [
        {
          'text': 'one',
          'value': 1,
        },
        {
          'text': 'one',
          'value': 2,
        },
        {
          'text': 'one',
          'value': 3,
        },
        {
          'text': 'one',
          'value': 4,
        },
      ],
    },
];

这只适用于打字稿,我不会出错。

但是在 dart 中我无法实现同样的事情。下面是我的飞镖代码。请帮助我,我收到一条错误消息 The element type 'Map<String, Object>' can't be assigned to the list type 'SingleQuestion'.

是否有任何资源可以帮助我克服从 typescript 到 dart 的迁移,最适合这些建议。

https://dartpad.dev/?id=bcef24b3cbd94a2150454cf0edea3704

其实你的数据是json。然后对数据使用 Object class,对 SingleQuestion 使用 fromJson 函数。你的主要功能是这样的:

void main() {
  Object data = {
      'question': "What's your fav color?",
      'answers': [
         {
           'text': 'red',
           'value': 1,
         },
         {
           'text': 'green',
           'value': 2,
         },
         {
           'text': 'yellow',
           'value': 3,
         },
         {
           'text': 'black',
           'value': 4,
         },
       ],
   };

  final List<SingleQuestion> questions = [SingleQuestion.fromJson(data)];

  print(questions[0].question);
  print(questions[0].answers[1].value);
  print(questions[0].answers[1].text);
}