类型字符串不可分配给类型编号

Type string is not assignable to type number

我是 angular 的新人,我对这个错误有疑问:

Type string is not assignable to type number

我的文件是这样的:

novo-fizicko-lice.component.ts

import { Component, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
import { ApiService } from '../api.service';
import { FizickoLice } from '../klase/fizicko-lice';

@Component({
  selector: 'app-novo-fizicko-lice',
  templateUrl: './novo-fizicko-lice.component.html',
  styleUrls: ['./novo-fizicko-lice.component.css']
})
export class NovoFizickoLiceComponent implements OnInit {

  prezime: string = "";
  ime: string = "";
  imeOca: string = "";
  jmb: string = "";
  mjestoStanovanja: string = "";
  napomena: string = "";
  datum: Date;
  obustavljenaIstraga: boolean;

  upisanoFizickoLice: FizickoLice;
  novoFizckoLiceForma = new FormControl();
  constructor(private api: ApiService) { }

  ngOnInit() {
  }

  public adduser() {
    console.log("test clikc");

    this.datum = new Date;

    const novoFizickoLice: FizickoLice = {
      Ime: this.ime,
      Prezime: this.prezime,
      ImeOca: this.imeOca,
      JMB: this.jmb,
      MjestoStanovanja: this.mjestoStanovanja,
      Napomena: this.napomena,
      DatumUnosenjaLica: this.datum,
      ObustavljenaIstraga: this.obustavljenaIstraga
    };

    this.api.AddNewUser(novoFizickoLice).subscribe(data => {
      console.log(data);
      this.upisanoFizickoLice = data;

    });

  }

}

fizicko-lice.ts

export interface FizickoLice {
  Ime: string;
  Prezime: string;
  ImeOca: string;
  JMB: number; 
  MjestoStanovanja: string;
  DatumUnosenjaLica: Date | string;
  Napomena: string;
  ObustavljenaIstraga: boolean;
}

我在这个文件 novo-fizicko-lice 中遇到错误。 component.this 在线

JMB:this.jmb,

我该如何解决这个问题?

您正在尝试分配数字类型的字符串值。也许你在引号之间使用了数字 '1'"2" 并且 TS 将其识别为字符串。

好吧,错误说明了一切:

NovoFizickoLiceComponent::jmb 声明为 string,但 FizickoLice::JMBnumber。当您在 addUser 方法中创建 new FizickoLice 时,您尝试使用不允许的字符串 JMB 初始化数字 jmb

您应该将 NovoFizickoLiceComponent::jmb 的类型更改为 number

jmb: number = 0;

或者在赋值前将字符串转换为数字

JMB: +(this.jmb)

您的问题来自您的变量jmb。 在您的界面 FizickoLice 中,您将 JMB 声明为一个数字。 在您的组件中,您为其分配了一个字符串。

const novoFizickoLice: FizickoLice = {
  Ime: this.ime,
  Prezime: this.prezime,
  ImeOca: this.imeOca,
  JMB: this.jmb, <---- Here, this.jmb is a string.
  MjestoStanovanja: this.mjestoStanovanja,
  Napomena: this.napomena,
  DatumUnosenjaLica: this.datum,
  ObustavljenaIstraga: this.obustavljenaIstraga
};

只要在创建变量时更改类型即可。 jmb: number;