Optionally resolved external types
saschanaz opened this issue · 5 comments
let stream: MSStream;
const inputStream = stream.msDetachStream(); // any in lib.d.ts
// const inputStream = stream.msDetachStream() as Windows.Storage.Streams.IInputStream; from winrt.d.ts
Can we have a potential-any type information that resolves only when we have correct d.ts file? Some small type definitions in DefinitelyTyped refers much bigger ones e.g. node.d.ts that is not always required. (Imagine a library that supports standard types and Node.js types together.) I hope I can just include a small file without node.d.ts or any other unneeded large files.
Maybe somewhat related to old #1402.
If people are using just a very small portion of another library, would they be better served by using structural typing to stub out the useful portion of the consumed type? Just thinking out loud.
@RyanCavanaugh I'm not sure I understand. Can you give me an example?
Like instead of
function fn(): SomeOtherLibrary.Point;
you could write
function fn(): { x: number; y: number; }
Assuming that the type is small enough to do this reasonably, of course.
That will be great, but the type of IInputStream in my example has a reference to Buffer, Buffer has one to MemoryBuffer, MemoryBuffer has one to IMemoryBufferReference, etc... Maybe one will not need all of them but maybe others will.
Tracking at #31894 now