From 4ff5003eb6cc929db9986a999c4366f5337a27f7 Mon Sep 17 00:00:00 2001 From: Carter Snook Date: Mon, 19 Oct 2020 21:41:40 -0500 Subject: [PATCH] docs(cli): interfaces used as parameters should be exported (#7500) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bartek IwaƄczuk --- docs/contributing/style_guide.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/contributing/style_guide.md b/docs/contributing/style_guide.md index 261a03cc9b..d275274e70 100644 --- a/docs/contributing/style_guide.md +++ b/docs/contributing/style_guide.md @@ -174,6 +174,28 @@ export interface PWrite { export function pwrite(options: PWrite) {} ``` +### Export all interfaces that are used as parameters to an exported member + +Whenever you are using interfaces that are included in the arguments of an +exported member, you should export the interface that is used. Here is an +example: + +```ts +// my_file.ts +export interface Person { + name: string; + age: number; +} + +export function createPerson(name: string, age: number): Person { + return { name, age }; +} + +// mod.ts +export { createPerson } from "./my_file.ts"; +export type { Person } from "./my_file.ts"; +``` + ### Minimize dependencies; do not make circular imports. Although `cli/js` and `std` have no external dependencies, we must still be