Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add TypeScript type definitions #801

Merged
merged 5 commits into from
Feb 18, 2019
Merged

Add TypeScript type definitions #801

merged 5 commits into from
Feb 18, 2019

Conversation

skovy
Copy link
Contributor

@skovy skovy commented Feb 17, 2019

  • Add dtslint to test the type definitions
    • Add dtslint script to package.json and run in CI
  • Copy/paste the existing type defintions from DefinitelyTyped
  • Add the types key to package.json (see here)
  • Include types/index.d.ts in the final package

Resolves #794.

@paulmillr
Copy link
Owner

Good stuff!

@coveralls
Copy link

Coverage Status

Coverage decreased (-20.6%) to 75.664% when pulling fb241dc on skovy:skovy/add-type-defs into 3e2e9f3 on paulmillr:master.

@@ -0,0 +1,168 @@
// TypeScript Version: 3.0
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defining the specific version here works here. But I wanted to dump everything below that I looked into because someone more knowledgeable about dtslint might know more?


From what I understand, by default dtslint will check all minor versions starting from 2.0 up to next. Currently, that is 2.0, 2.1, ..., 3.3, next (will be 3.4.).

@types/parsimmon is a depedency of dtslint: (seems like types generally are devDependencies)

yarn why @types/parsimmon
=> Found "@types/parsimmon@1.10.0"
info Reasons this module exists
   - "dtslint#definitelytyped-header-parser" depends on it
   - Hoisted from "dtslint#definitelytyped-header-parser#@types#parsimmon"

And running dtslint without the version defined here was erroring:

Output of dtslint types
Installing to node_modules/dtslint/typescript-installs/2.0...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.1...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.2...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.3...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.4...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.5...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.6...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.7...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.8...

Installed!
Installing to node_modules/dtslint/typescript-installs/2.9...

Installed!
Installing to node_modules/dtslint/typescript-installs/3.0...

Installed!
Installing to node_modules/dtslint/typescript-installs/3.1...

Installed!
Installing to node_modules/dtslint/typescript-installs/3.2...

Installed!
Installing to node_modules/dtslint/typescript-installs/3.3...

Installed!
Installing to node_modules/dtslint/typescript-installs/next...

Installed!
Error: Errors in typescript@2.0 for external dependencies:
../node_modules/@types/parsimmon/index.d.ts(45,75): error TS2305: Module 'Parsimmon' has no exported member 'Reply'.
../node_modules/@types/parsimmon/index.d.ts(45,96): error TS2305: Module 'Parsimmon' has no exported member 'Parser'.
../node_modules/@types/parsimmon/index.d.ts(91,3): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'.
../node_modules/@types/parsimmon/index.d.ts(91,3): error TS7008: Member '[P in keyof' implicitly has an 'any' type.
../node_modules/@types/parsimmon/index.d.ts(91,4): error TS2304: Cannot find name 'P'.
../node_modules/@types/parsimmon/index.d.ts(91,9): error TS2304: Cannot find name 'keyof'.
../node_modules/@types/parsimmon/index.d.ts(91,15): error TS1005: ']' expected.
../node_modules/@types/parsimmon/index.d.ts(91,15): error TS2304: Cannot find name 'TLanguageSpec'.
../node_modules/@types/parsimmon/index.d.ts(91,28): error TS1005: ';' expected.
../node_modules/@types/parsimmon/index.d.ts(91,29): error TS1128: Declaration or statement expected.
../node_modules/@types/parsimmon/index.d.ts(91,49): error TS2304: Cannot find name 'TLanguageSpec'.
../node_modules/@types/parsimmon/index.d.ts(91,75): error TS2304: Cannot find name 'TLanguageSpec'.
../node_modules/@types/parsimmon/index.d.ts(91,89): error TS2304: Cannot find name 'P'.
../node_modules/@types/parsimmon/index.d.ts(91,92): error TS1109: Expression expected.
../node_modules/@types/parsimmon/index.d.ts(95,3): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'.
../node_modules/@types/parsimmon/index.d.ts(95,3): error TS7008: Member '[P in keyof' implicitly has an 'any' type.
../node_modules/@types/parsimmon/index.d.ts(95,4): error TS2304: Cannot find name 'P'.
../node_modules/@types/parsimmon/index.d.ts(95,9): error TS2304: Cannot find name 'keyof'.
../node_modules/@types/parsimmon/index.d.ts(95,15): error TS1005: ']' expected.
../node_modules/@types/parsimmon/index.d.ts(95,15): error TS2304: Cannot find name 'TLanguageSpec'.
../node_modules/@types/parsimmon/index.d.ts(95,28): error TS1005: ';' expected.
../node_modules/@types/parsimmon/index.d.ts(95,29): error TS1128: Declaration or statement expected.
../node_modules/@types/parsimmon/index.d.ts(95,38): error TS2304: Cannot find name 'TLanguageSpec'.
../node_modules/@types/parsimmon/index.d.ts(95,52): error TS2304: Cannot find name 'P'.
../node_modules/@types/parsimmon/index.d.ts(95,55): error TS1109: Expression expected.
../node_modules/@types/parsimmon/index.d.ts(96,2): error TS1128: Declaration or statement expected.
../node_modules/@types/parsimmon/index.d.ts(102,25): error TS2304: Cannot find name 'Result'.
../node_modules/@types/parsimmon/index.d.ts(216,18): error TS2304: Cannot find name 'Mark'.
../node_modules/@types/parsimmon/index.d.ts(220,49): error TS2304: Cannot find name 'Node'.
../node_modules/@types/parsimmon/index.d.ts(258,65): error TS2305: Module 'Parsimmon' has no exported member 'Reply'.
../node_modules/@types/parsimmon/index.d.ts(304,33): error TS2304: Cannot find name 'Rule'.
../node_modules/@types/parsimmon/index.d.ts(304,40): error TS2304: Cannot find name 'Language'.
../node_modules/@types/parsimmon/index.d.ts(305,48): error TS2304: Cannot find name 'TypedRule'.
../node_modules/@types/parsimmon/index.d.ts(398,49): error TS2304: Cannot find name 'Result'.
../node_modules/@types/parsimmon/index.d.ts(417,11): error TS7010: 'seqObj', which lacks return-type annotation, implicitly has an 'any' return type.
../node_modules/@types/parsimmon/index.d.ts(417,39): error TS1005: ',' expected.
../node_modules/@types/parsimmon/index.d.ts(417,39): error TS2300: Duplicate identifier 'T'.
../node_modules/@types/parsimmon/index.d.ts(417,41): error TS1005: ',' expected.
../node_modules/@types/parsimmon/index.d.ts(417,49): error TS1005: ',' expected.
../node_modules/@types/parsimmon/index.d.ts(417,49): error TS2300: Duplicate identifier 'T'.
../node_modules/@types/parsimmon/index.d.ts(417,82): error TS1005: ']' expected.
../node_modules/@types/parsimmon/index.d.ts(417,87): error TS1005: ')' expected.
../node_modules/@types/parsimmon/index.d.ts(417,89): error TS1109: Expression expected.
../node_modules/@types/parsimmon/index.d.ts(417,91): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
../node_modules/@types/parsimmon/index.d.ts(417,91): error TS2365: Operator '<' cannot be applied to types '<T>(fn: (input: string, i: number) => any) => Parser<T>' and 'number'.
../node_modules/@types/parsimmon/index.d.ts(417,98): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.
../node_modules/@types/parsimmon/index.d.ts(417,103): error TS1109: Expression expected.
../node_modules/@types/parsimmon/index.d.ts(417,104): error TS1128: Declaration or statement expected.
../node_modules/@types/parsimmon/index.d.ts(417,115): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'.
../node_modules/@types/parsimmon/index.d.ts(417,116): error TS2304: Cannot find name 'K'.
../node_modules/@types/parsimmon/index.d.ts(417,121): error TS2304: Cannot find name 'Key'.
../node_modules/@types/parsimmon/index.d.ts(417,127): error TS2304: Cannot find name 'T'.
../node_modules/@types/parsimmon/index.d.ts(417,129): error TS2304: Cannot find name 'K'.
../node_modules/@types/parsimmon/index.d.ts(417,134): error TS1109: Expression expected.
../node_modules/@types/parsimmon/index.d.ts(439,39): error TS2304: Cannot find name 'StreamType'.
../node_modules/@types/parsimmon/index.d.ts(553,22): error TS2304: Cannot find name 'Index'.
../node_modules/@types/parsimmon/index.d.ts(578,99): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'.
../node_modules/@types/parsimmon/index.d.ts(578,100): error TS2304: Cannot find name 'K'.
../node_modules/@types/parsimmon/index.d.ts(578,105): error TS2304: Cannot find name 'Key'.
../node_modules/@types/parsimmon/index.d.ts(579,1): error TS1128: Declaration or statement expected.

I also tried adding "files": ["index.d.ts", "test.ts"] to types/tsconfig.json to only run against those files and "exclude": ["../node_modules"] and "exclude": ["node_modules"] but none worked for me.

Lastly, the current version of TS is 3.3 but going above 3.0 here errored with Error: Don't use // TypeScript Version for newer TS versions, use typesVerisons instead. It seems typeVersions isn't necessary currently since only a single version of types will be provided? (see here for more info on typeVersions)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants