打字稿将字符串[]转换为字符串

Typescript convert string[] to string

我有一个 Angular 5 应用程序,我有一个候选对象,它有一个字符串 [] 属性,在它实现的接口中指定。 属性 的实际值作为输入字符串从模板中检索。这就是问题。 该对象需要作为字符串数组保存到数据库中,如下所示:

{ candidate.skills: ["c++", "java", "etc"] }

但是,模板中输入字段的值是一个字符串。但是打字稿认为它是对象接口中指定的字符串[]。 所以,我不能将 candidate.skills 拆分成一个数组。

有办法吗?是的话我还没找到

您可以在界面中指定类型为字符串或数组。

skills: string|string[];

编辑

如评论中所述,您可能必须强制转换变量才能执行仅适用于特定类型的某些操作:

// Convert from string to string[]
this.candidate.skills = (<string>this.candidate.skills).split(', ');

我实现的接口:

export class Candidate {
id: number;
name: string;
skills: string|string[]; }

在组件中,我尝试通过服务上传我的数据。 component.ts中的代码:

import { Component, OnInit } from '@angular/core';
import { CandidatesService } from '../candidates.service';
import { Validators } from '@angular/forms';
import { Observable } from 'rxjs/Observable';

import { Candidate } from '../candidate';

@Component({
  selector: 'app-candidates-adding',
  templateUrl: './candidates-adding.component.html',
  styleUrls: ['./candidates-adding.component.css']
})
export class CandidatesAddingComponent implements OnInit {
  candidate: Candidate = new Candidate();

  constructor(private candidatesService: CandidatesService) { }

  ngOnInit() {

  }

  saveCandidate(): void {
    if(this.candidate.skills.indexOf(', ') >= 0) {
      this.candidate.skills = this.candidate.skills.split(', '); 
    }
    this.candidatesService.addCandidate(this.candidate).subscribe();
  }
}

并且在模板中:

<input [(ngModel)]="candidate.name" placeholder="name" minlength="4">
<input [(ngModel)]="candidate.skills" placeholder="name" minlength="1">
<button (click)="saveCandidate()">Adauga candidat</button>

我也有类似的问题,我使用的是 typescript v.4.4.3。

this.candidate.skills = ((this.candidate.skills as unknown) as string).split(',')

所以,首先我将它设置为未知,然后设置为我想要的类型(例如,这里设置为字符串),这对我有用。

我来到这里试图将字符串|字符串[] 转换为整数。我找到了 3 个解决方案。

const trouble: string|string[] = "1234"
const id = Number(trouble)
const id = parseInt(trouble.toString())
const id = parseInt(trouble.toString(), 10)