使用界面时出现 TypeScript 错误 2304

问题描述 投票:0回答:2

在一个有角度的项目上工作,我创建了一个接口文件,我在其中做了两件事:

定义接口:

export interface tableHeader {
    roundNumber: string;
    eighteenHoleScore: string;
    nineHoleScore: string;
    courseRating: string;
    slopeRating: string;
    scoreDifferential: string;
}

创建一个变量来保存字符串数组:

export const roundHeader = [
    roundNumber: 'Round Number',
    eighteenHoleScore: '18 Hole Score',
    nineHoleScore: '9 Hole Score',
    courseRating: 'Course Rating',
    slopeRating: 'Slope Rating',
    scoreDifferential: 'Score Differential'
]

对于在

roundHeader
const 中创建的每个变量,我都收到上述 2304 错误。 我浏览了该网站,没有看到任何可以回答这个问题的内容,我在谷歌上发现了很多与“require”相关的内容,但在这种情况下,它与 require 无关。

我只是尝试创建一个接口来定义每个变量类型,然后在同一文件中创建静态文本,以便我可以将此静态文本导出到我的应用程序的多个页面。

非常感谢任何帮助

angular typescript
2个回答
3
投票
  1. 您需要定义

    roundHeader
    类型。

  2. 数组仅包含,而不包含键值

如果您想使用数组接口,请使用对象数组:

interface tableHeader {
  roundNumber: string;
  eighteenHoleScore: string;
  nineHoleScore: string;
  courseRating: string;
  slopeRating: string;
  scoreDifferential: string;
}

const roundHeader: tableHeader[] = [
  {
    roundNumber: "Round Number",
    eighteenHoleScore: "18 Hole Score",
    nineHoleScore: "9 Hole Score",
    courseRating: "Course Rating",
    slopeRating: "Slope Rating",
    scoreDifferential: "Score Differential",
  },
];

游乐场链接

您的答案的替代方案:

如果你想要静态文本,为什么不使用

enum
?:

enum TableHeader{
    roundNumber= "Round Number",
    eighteenHoleScore= "18 Hole Score",
    nineHoleScore= "9 Hole Score",
    courseRating= "Course Rating",
    slopeRating= "Slope Rating",
    scoreDifferential= "Score Differential",
   }

   const somewhereNeedsRoundNumber = TableHeader.roundNumber

0
投票

也许您的案例就是我们的朋友 Jastria Rahmat 所展示的。不过,这里只是澄清一些事情:

当你声明你的接口时,一切都很好,但是当创建你的 const 时,你没有明确说明该 const 是什么类型,可以通过执行

export const roundHeader: tableHeader
来完成什么(最好以大写字母开头的类型/接口名称)。

另一个问题是你的

roundHeader
是一个数组,并且你尝试向其中添加 key-value 对,而正确的做法是创建一个 JS 对象而不是该数组,变得像这样:

export const roundHeader: TableHeader = {
    roundNumber: 'Round Number',
    eighteenHoleScore: '18 Hole Score',
    nineHoleScore: '9 Hole Score',
    courseRating: 'Course Rating',
    slopeRating: 'Slope Rating',
    scoreDifferential: 'Score Differential'
};

如果您确实想要包含这些字段的对象数组,只需按照 Jastria 的回答即可,得到类似于以下内容的内容:

export const roundHeader: TableHeader[] = [
    {
        roundNumber: "Round Number",
        eighteenHoleScore: "18 Hole Score",
        nineHoleScore: "9 Hole Score",
        courseRating: "Course Rating",
        slopeRating: "Slope Rating",
        scoreDifferential: "Score Differential",
    },
    // ...
    // other objects with the same fields
]
© www.soinside.com 2019 - 2024. All rights reserved.