Typescript - Свойство 'userId' не существует для типа 'unknown' - PullRequest
2 голосов
/ 24 апреля 2020

У меня есть следующий простой код для практики rx JS в Typescript.

import fetch from 'node-fetch';
import {
    Observable, Subject, asapScheduler, pipe, of, from,
    interval, merge, fromEvent, SubscriptionLike, PartialObserver
} from 'rxjs';
import { map, filter, scan } from 'rxjs/operators';

function getUserId() {
    return from<Promise<{userId: number}>>(
        fetch('https://jsonplaceholder.typicode.com/posts/1').then(r => r.json())
    )
    .pipe(map(v => v.userId))
    .subscribe(console.log);
}

getUserId();

Почему в командной строке выдается ошибка?

C:\Users\Administrator\Downloads\typescript>ts-node from.ts

C:\Users\Administrator\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:423

    return new TSError(diagnosticText, diagnosticCodes)
           ^
TSError: ⨯ Unable to compile TypeScript:
from.ts:12:22 - error TS2339: Property 'userId' does not exist on type 'unknown'
.

12     .pipe(map(v => v.userId))
                        ~~~~~~
...

я думал, что код должен работать, потому что userId уже определен в return from<Promise<{userId: number}>>{...

VScode также дает мне сообщение об ошибке, связанное с userId Property 'userId' does not exist on type 'unknown'.ts(2339)

1 Ответ

1 голос
/ 24 апреля 2020

Пожалуйста, попробуйте ниже.

Заменить

v.userId

На

v['userId']
...