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