【问题标题】:Typescript:error TS2314: Generic type 'Array<T>' requires 1 type argument(s)打字稿:错误 TS2314:通用类型 'Array<T>' 需要 1 个类型参数
【发布时间】:2023-03-06 15:06:01
【问题描述】:

我正在学习打字稿,我已经编写了非常基本的代码。

class School {

    nameOfStudents: Array[string];
    noOfteachers: number

    constructor(name: Array[string], no: number) {
        this.nameOfStudents = name;
        this.noOfteachers = no;
    }

    printName():void{

        for(let i=0;i<this.nameOfStudents.length;i++){
            console.log(this.nameOfStudents[i])
        }
    }
}
let arr=["a","b","c","d","e"]
let school = new School(arr,100);

school.printName();

我曾经在哪里使用过该数组,但出现以下错误:

错误 TS2314:通用类型“数组”需要 1 个类型参数 我哪里做错了?

【问题讨论】:

  • 这不是您提供特定类型的方式 - 您的意思是 Array&lt;string&gt; 吗?或者只使用string[]
  • 尝试像这样定义数组:nameOfStudents : string[] = [];

标签: typescript


【解决方案1】:

泛型数组必须定义为:

  • const arr = new Array&lt;string&gt;()
  • const arr = string[]

【讨论】:

    【解决方案2】:

    建议使用 T[] 合成器而不是 Array 合成器

    TSlint rule "array-type": [true, "array"]:

    对于您的代码,Array[string] 应该是 Array 以便编译。

    nameOfStudents: Array<string>;
    noOfteachers: number
    
    constructor(name: Array<string>, no: number) {
        this.nameOfStudents = name;
        this.noOfteachers = no;
    }
    

    最好的做法是这样的

    class School {
    
        nameOfStudents: string[];
        noOfteachers: number;
    
        constructor(name: string[], no: number) {
            this.nameOfStudents = name;
            this.noOfteachers = no;
        }
    
        printName(): void {
            for (const studentName of this.nameOfStudents) {
                console.log(studentName);
        }
    }
    

    我强烈建议您为您的项目安装tslint,它将帮助您编写干净的 Typescript 代码。

    【讨论】:

      猜你喜欢
      • 2017-02-08
      • 2020-12-06
      • 2022-08-04
      • 1970-01-01
      • 2015-12-06
      • 2017-12-05
      • 2020-10-26
      • 2022-08-11
      • 2017-06-05
      相关资源
      最近更新 更多