SocketCluster / socketcluster-client

JavaScript client for SocketCluster
MIT License
293 stars 91 forks source link

Typescript support #117

Open gchokeen opened 6 years ago

gchokeen commented 6 years ago

Hi,

I am trying to use this library in the ionic 4 app and its based on typescript. Can you tell how to import the socket cluster inside angular 2 component?

What I tried import {socketCluster} from 'socketcluster-client'

ERROR

Could not find a declaration file for module 'socketcluster-client'. '.../node_modules/socketcluster-client/index.js' implicitly has an 'any' type. Try npm install @types/socketcluster-client if it exists or add a new declaration (.d.ts) file containing declare module 'socketcluster-client';

DanielRose commented 6 years ago

I started writing type definitions which include socketcluster-client; see https://github.com/SocketCluster/socketcluster/issues/431

makarov-roman commented 5 years ago

Thanks @DanielRose for https://www.npmjs.com/package/@types/socketcluster I guess it's time to close the issue.

ChisholmKyle commented 4 years ago

The types are broken again due to major version change to v15. @DanielRose is having a look https://github.com/DefinitelyTyped/DefinitelyTyped/issues/41893

I have a feeling it's going to be a bit of a job and there was some discussion about it on Gitter. Are the Socketcluster main contributors also going to look at typescript and maybe help out?

jondubois commented 4 years ago

I think right now it makes sense for developers to define the TS interfaces themselves in their projects but we can start thinking about updating DefinitelyTyped definitions.

One thing to be aware of is that the type names are currently prefixed with the letters AG. See https://socketcluster.io/docs/api/ - This was the prefix for the temporary SC fork 'Asyngular' where all the async/await improvements were developed.

I'm still unsure whether we should stick to that AG prefix or change it to back to SC; e.g. SCChannel and SCServerSocket?

Alternatively, we could stick to AG as a prefix and define it as standing for Asynchronous Generator because that's the core principle behind the new approach.

DanielRose commented 4 years ago

Got a PR: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/42068 Due to a lot of internal changes, and obsoleting of several packages, it was a bit more difficult than expected.

ChisholmKyle commented 4 years ago

Typing an existing package is a big job. Thank you @DanielRose for the quick work!

ChisholmKyle commented 4 years ago

@jondubois I think it would make sense to keep the AG prefix now that v15 is released and with all the internal changes it's a quick way to distinguish between major versions.

katanacrimson commented 4 years ago

I would recommend considering it for v16. AG typically implies Angular is involved, conventionally speaking. Many angular plugins and libraries will prefix with "ag-".

IMO, if further discussion is warranted, though, it should be in its own issue.

jondubois commented 4 years ago

I thought Angular was ng-; it was at some point ;p

katanacrimson commented 4 years ago

Point. I think I'm misremembering.

jondubois commented 4 years ago

@DanielRose Wow nice work :)