I'm expecting this to not be a bug but I can't seem to figure out what else it could be.
Basically I'm trying to create a (TLS)Socket instance using the core Node.js net or tls modules depending on a condition.
Instantiating them by directly referencing the module works fine but whenever I introduce a level of indirection by conditionally defining the TCP client module, compilation breaks.
Code
importnetfrom'net';importtlsfrom'tls';constsocketA=net.connect({host: 'localhost',port: 1234});constsocketB=tls.connect({host: 'localhost',port: 1234});constprotocol=process.argv[2];constclient=protocol==='https' ? tls : net;constsocketC: net.Socket|tls.TLSSocket=client.connect({host: 'localhost',port: 1234});console.log(socketA,socketB,socketC);Expected behavior:
Successful compilation.
Actual behavior:
This expression is not callable.
Each member of the union type
'{ (options: NetConnectOpts, connectionListener?: (() => void) | undefined): Socket;
(port: number, host?: string | undefined, connectionListener?: (() => void) | undefined): Socket; (path: string, connectionListener?: (() => void) | undefined): Socket; } | { ...; }'
has signatures, but none of those signatures are compatible with each other.
12 const socketC = client.connect({ host: 'localhost', port: 443 });
~~~~~~~
Playground Link:
Playground Link
Related Issues:
I'm expecting this to not be a bug but I can't seem to figure out what else it could be.
Basically I'm trying to create a
(TLS)Socketinstance using the core Node.jsnetortlsmodules depending on a condition.Instantiating them by directly referencing the module works fine but whenever I introduce a level of indirection by conditionally defining the TCP client module, compilation breaks.
Code
Expected behavior:
Successful compilation.
Actual behavior:
Playground Link:
Playground Link
Related Issues: