ค้นหาเว็บไซต์

typescript - ไม่สามารถหาชื่อเมื่อใช้ constructor แต่สามารถหาได้เมื่อทำการแปลงประเภท


ฉันได้ทำการนำเข้าประเภทสองประเภท

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

จากการดูที่ซอร์ส ทั้งสองอย่างนี้เป็นคลาสที่มีคอนสตรัคเตอร์ ฉันสามารถเรียกคอนสตรัคเตอร์ของตัวแรกได้ และสามารถแปลงชนิดกับตัวที่สองได้ แต่ฉันไม่สามารถเรียกคอนสตรัคเตอร์ของตัวที่สองได้

ทั้งคู่ก็ใช้ได้

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

TypeScript แจ้งปัญหาเกี่ยวกับอันนี้ "ไม่สามารถหาชื่อ 'WebStorageStateStore' ได้".

let w2 = new WebStorageStateStore();

ทำไม TypeScript จึงไม่สามารถหาคอนสตรัคเตอร์ได้เมื่อมันสามารถแคสต์เป็นชนิดนั้นได้?

นี่คือต้นฉบับสำหรับ oidc-client.

คำตอบ #1

TypeScript แจ้งปัญหาเกี่ยวกับอันนี้ "ไม่สามารถหาชื่อ 'WebStorageStateStore' ได้".

เพียงเพราะตัวแปรมีอยู่ในพื้นที่ประกาศ type ไม่ได้หมายความว่ามันจะอยู่ในพื้นที่ประกาศ variable ด้วย ในกรณีของคุณมันอยู่เพียงในพื้นที่ type เท่านั้น

เพิ่มเติม

พื้นที่การประกาศถูกกล่าวถึงที่นี่ https://basarat.gitbooks.io/typescript/content/docs/project/declarationspaces.html