ale917k
ale917k

Reputation: 1768

When to use types.ts vs types.d.ts

There are many resources explaining a declaration file (d.ts) is useful for either:

What confuses me is that many projects like material-ui are using d.ts files to simply store types and have them consumed in their own code.

At this point I start questioning, what's the point in having types.ts files where we have to export / import types and interfaces to consume them, when we could have types.d.ts files and simply consume its interfaces / types without the need for exporting / importing? What are the pros and cons of using one over the other?

Upvotes: 22

Views: 23858

Answers (2)

Evert
Evert

Reputation: 99525

In most cases you should just write typescript files, and let the compiler generate your .d.ts files for you. This is almost always the right choice, except:

  1. For some reason you are not allowed to write typescript, and you must write everything pure javascript.
  2. You are creating or modifying types from another package. .d.ts files can help you override those types.
  3. You have an extremely large codebase.

I imagine Material UI in group 1 for this. Deno is in group 3.

tl;dr: stick to writing typescript. Writing javascript and separate type files is extremely unergonomic and you lose a ton of the benefits of typescript.

Upvotes: 18

Ardy Febriansyah
Ardy Febriansyah

Reputation: 768

.d.ts

  • To indicate this file should not be compiled
  • Place declaration type and will implemented on js somewhere
  • Only types file

.ts

  • Normal typescript source code
  • Executable code that must compiled

Upvotes: 13

Related Questions