错误TS7027:在Angular2 TypeScript Service类中检测到无法访问的代码

我正在跟着一个PluralSight课程,并在Angular2中练习写一个基本的服务。 我有以下服务文件:

customer.service.ts

import { Injectable } from '@angular/core'; @Injectable() export class CustomerService { constructor() {} getCustomers() { return [ {id: 1, name: 'Ward'}, {id: 2, name: 'Joe'}, {id: 3, name: 'Bill'}, {id: 4, name: 'Bob'}, {id: 5, name: 'Levi'}, {id: 6, name: 'Brian'}, {id: 7, name: 'Susie'} ]; } } 

当我使用npm start lite-server npm start我收到以下错误:

 angular-quickstart@1.0.0 start C:\Dev\my-proj tsc && concurrently "tsc -w" "lite-server" app/customer/customer.service.ts(10,3): error TS7027: Unreachable code detected. 

当我注释掉返回块时,文件服务器启动正常,所以它似乎是在它不喜欢的回报。 任何帮助,将不胜感激。

如果你在return语句之后把整个数组放在一个新行中,那么你的方法有两个语句:

  • 返回undefined
  • 一个数组定义

你看到的错误是一个很有帮助的错误。 TypeScript告诉你有代码(数组定义)永远不可能被达到,因为你已经在函数返回之前已经可以到达数组了。

所以解决scheme非常简单。 至less将左括号移动到return语句的返回语句行中。 而已。

我调整了一下。 这应该工作:

 import {Injectable} from "@angular/core"; @Injectable() export class CustomerService { private data: Array<any>; constructor() { this.data = [ {id: 1, name: 'Ward'}, {id: 2, name: 'Joe'}, {id: 3, name: 'Bill'}, {id: 4, name: 'Bob'}, {id: 5, name: 'Levi'}, {id: 6, name: 'Brian'}, {id: 7, name: 'Susie'} ]; } getCustomers() { return this.data; } } 

或者如果你想要新的数组需要在同一行开始:

 import {Injectable} from "@angular/core"; @Injectable() export class CustomerService { constructor() { } getCustomers() { return [ {id: 1, name: 'Ward'}, {id: 2, name: 'Joe'}, {id: 3, name: 'Bill'}, {id: 4, name: 'Bob'}, {id: 5, name: 'Levi'}, {id: 6, name: 'Brian'}, {id: 7, name: 'Susie'} ]; } } 

当你在return语句之后放置一些代码,或者当你在if语句中返回时,通常会发生这种情况,而你忘记了else代码。

 ... return warning; this.methodUnreacheable();