microsoft / microsoft/TypeScript
Type annotation for all exports in the module
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
Search Terms
Export, typed exports, modules, Next.js, Redwood.js
Suggestion
Allow a new syntax From issue #420 that will allow typing all of exports in a module.
export implements {
default: string
foo: (bar: boolean) => number
}
export default "Hello world!";
export function foo(bar) { return 1 }
Use Cases and Examples
Increasingly frameworks are using named module exports as a way of organizing their code. For instance Next.js is using named exports to specify things like exported component and functions for fetching data:
import { PageModule } from 'next'
type Post = { title: string };
export implements PageModule<{ posts: Posts[] }>;
function Blog({ posts }) {
return (
<ul>
{posts.map(post => (
<li>{post.title}</li>
))}
</ul>
)
}
export async function getStaticProps() {
return { props: { posts: [] } }
}
export default Blog
Frameworks relying on named export
- Next.js
- Redwood.js
- Remix.js
- SevlteKit
- StroryBook
- CloudFlare Workers
-
please suggest more
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.
Related issues
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la syntaxe proposée et les issues associées #420 et #13626. Comparez le comportement demandé avec les cas d’utilisation de Next.js, Redwood.js, Remix.js, SvelteKit, Storybook et Cloudflare Workers ; l’issue ne nomme aucun fichier cible ni aucun test, il faudrait donc d’abord définir la syntaxe et le périmètre de l’implémentation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- next.js, typescript
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100