, genellikle bir sınıf tipi tipini tanımlar. Bu, Type
C# 'ye benzer bir çeşittir, ancak aynı zamanda doğrudan new
işleci ile de örneklenebilir. bir argüman, özellik veya diğer değişken sınıfına yapılan bir başvuru içerir bekleniyorsaNeden object.constructor bir "İşlev" dir ve TypeScript'te "newable" değil? bir sınıfı, bir argüman olarak geçirilir</p> <pre><code>declare type Type = { new (...args: any[]): any } </code></pre> <p>Örneğin, bu kullanılabilir olabilir: daktilo
A constructor function that may receive any number and type of arguments, and may return anything.
(daha kesin olarak, yapıcı işlevi), Type
türü her zaman: AFAIK, bu tip tanımı için etkili bir şekilde benzerdir elimde ve benim için çok yararlı.
Ancak, bazen ben sınıf (yapıcı işlevine) bir başvuru kendisi yok durumlara, sadece prototip rastlamak. Ancak, bununla birlikte tip Function
taşımaktadır
obj.constructor
tarafından sınıfa kendisi bir başvuru almak için hala mümkündür ve sınıf olarak örneğini mümkün değildir: Bu hatayı verir
new obj.constructor(); // Error: Cannot use 'new' ...
: Ben tür iddialarını kullanırsanız
Cannot use 'new' with an expression whose type lacks a call or construct signature.
, derleyici new
operatörü kabul eder ve çalışma zamanında beklendiği gibi derlenmiş kod davranır.
obj.constructor
neden raftan çıkarılabilir olmadığını açıklayan bir şey var mı?
Kodun tam bir örneği verebilir misiniz? Neyin olduğunu çoğaltmaya çalıştım ve neden oluşturulan jlerden ** yeni obj.constructor() ** diyemediğini anladım. Bir nesnede ** constructor ** özelliği yoktur. http://www.typescriptlang.org/Playground#src=type%20Type%20%3D%20%7B%0A%20%20%20%20new%20(...args%3A%20any%5B%5D)% 3A% 20any% 0A% 7D% 0A% 0Alet% 20a% 3A% 20Type% 20% 3D% 20class% 20A,% 20,% 7B% 0A% 20,% 20,% 20,% 20constructor()% 20,% 7B% 0A% 0A% 20,% 20,% 20,% 7D% 0A% 7D% 0A% 0Alet% 20b% 20% 3D% 20new% 20a()% 3B% 20 – toskv