2016-10-10 5 views
1

Я импортировал два типа.Невозможно найти имя при использовании конструктора, но может при литье

import { UserManager, WebStorageStateStore } from "oidc-client"; 

От взгляда на источник оба эти класса являются конструкторами. Я могу использовать все конструктор первого, и я могу использовать его со вторым, но я не могу назвать конструктор второго.

Обе эти работы.

let um = new UserManager({}); 
let w1 = <WebStorageStateStore> {}; 

TypeScript жалуется на это. «Не удается найти имя« WebStorageStateStore ».

let w2 = new WebStorageStateStore(); 

Почему TypeScript не может найти конструктор, когда он способен отличить его от типа?

Это source for oidc-client.

ответ

1

TypeScript жалуется на это. «Не удается найти имя« WebStorageStateStore ».

Просто потому, что переменная существует в типа декларации пространства не означает, что его также в декларации пространства переменной. В вашем случае его только в типа пространство.

Больше

декларации пространства покрыты здесь https://basarat.gitbooks.io/typescript/content/docs/project/declarationspaces.html

+0

Действительно. Файл определения типа определяет 'WebStorageStateStore' как интерфейс. Смена его на класс устранила проблему. –

Смежные вопросы