Свойство 'fullName' неявно имеет тип 'any', потому что в его методе доступа отсутствует аннотация типа параметра - PullRequest
0 голосов
/ 13 апреля 2020

Я проходил курс в JS. И он использовал следующий код, но когда я добавил его, он не работает. Возвращает неопределенное. Проблема в "set fullName". Это ошибка из кода VS:

"Свойство 'fullName' неявно имеет тип 'any', поскольку в его методе доступа отсутствует аннотация типа параметра"

Консоль выдает неопределенное значение.

Я гуглил, что-то видел с версией машинописного текста, но я использую последнюю версию, которая поставляется с VSCODE, версия TypeScript: 3.9.0

class Person {
constructor(firstname, lastName, age, likes = []) {
    this.firstName = firstname
    this.lastName = lastName
    this.age = age
    this.likes = likes
}
getBio() {
    let bio = `${this.firstName} is ${this.age}.`

    this.likes.forEach( (like) => {
        bio = bio + ` ${this.firstName} likes ${like}.`
    }) 
    return bio        
}

set fullName(fullName) {
    const names = fullName.split(' ')
    this.firstName = names[0]
    this.lastName = names[1]
}

}

1 Ответ

0 голосов
/ 13 апреля 2020

«проблема» заключается в вашем tsconfig.

у вас есть файл в вашем проекте root с именем tsconfig.json, в котором есть эта строка:

noImplicitAny: "true"

если вы у вас нет tsconfig.json, тогда vscode, вероятно, работает с конфигурацией по умолчанию, в которой есть эта опция, и вы можете создать tsconfig, чтобы установить эту опцию.

это означает, что вы не можете писать код там, где Тип неявно любой, вам нужно явно объявить его тип или написать его так, чтобы его тип мог быть выведен. так что вы можете либо переключить эту опцию на false (НЕ рекомендуется), либо вы можете явно объявить ваши типы

set fullName(fullName: string) {

, и вы, вероятно, захотите делать это везде:

constructor(firstname: string, lastName: string, age: number, likes: string[] = []) {

просто личная заметка, курс звучит устарело или не очень хорошо для машинописи, если они кодируются с неявным разрешением.

...