microsoft / microsoft/TypeScript

emit code miss return type in .d.ts ( 3.9.0-dev.20200408 )

Abierto
#37,840 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Needs Investigation
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

TypeScript Version: Version 3.9.0-dev.20200408

Search Terms:

Code

export declare const lifecycleMap: {
	install: {
		readonly name: "install";
		readonly before: readonly ["preinstall"];
		readonly after: readonly ["postinstall", "prepublish", "prepare", "preshrinkwrap", "shrinkwrap", "postshrinkwrap"];
	};
	pack: {
		readonly name: "pack";
		readonly ignoreSelf: true;
		readonly before: readonly ["prepublish", "prepare", "prepack"];
		readonly after: readonly ["postpack"];
	};
	publish: {
		readonly name: "publish";
		readonly before: readonly ["prepublish", "prepare", "prepublishOnly", "prepack", "postpack"];
		readonly after: readonly ["postpublish"];
	};
};

export interface ILifecycleEntry
{
	readonly name: string;
	readonly ignoreSelf?: boolean;
	readonly before: readonly string[];
	readonly after: readonly string[];
}

export type ILifecycleMapKeys = keyof typeof lifecycleMap;

export type ILifecycleMap<K extends string = string> = typeof lifecycleMap & Record<K, ILifecycleEntry>;


export function getLifecycleCore<K extends ILifecycleMapKeys>(scriptName: string | K)
{
	if (isKnownLifecycleKey(scriptName))
	{
		return lifecycleMap[scriptName]
	}

	return (lifecycleMap as ILifecycleMap)[scriptName]
}

export function getLifecycle<K extends string | ILifecycleMapKeys>(scriptName: K)
{
	return getLifecycleCore(scriptName) ?? {
		name: scriptName,
		before: [
			`pre${scriptName}`
		],
		after: [
			`post${scriptName}`
		],
	}
}

export function isKnownLifecycleKey<K extends ILifecycleMapKeys>(scriptName: string | K): scriptName is ILifecycleMapKeys
{
	return scriptName in lifecycleMap
}

tsconfig.json

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es2019",
        "jsx": "preserve",
        "moduleResolution": "node",
        "allowJs": false,
        "allowUmdGlobalAccess": false,
        "sourceMap": true,
        "inlineSourceMap": false,
        "inlineSources": true,
        "declaration": true,
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "allowSyntheticDefaultImports": true,
        "resolveJsonModule": true,
        "strict": false,
        "strictBindCallApply": true,
        "strictNullChecks": false,
        "strictFunctionTypes": true,
        "noImplicitThis": true,
        "preserveConstEnums": true,
        "forceConsistentCasingInFileNames": true,
        "incremental": true,
        "noErrorTruncation": true,
        "locale": "zh-TW",
        "removeComments": false,
        "traceResolution": false,
        "newLine": "lf",
        "esModuleInterop": true
    },

Expected behavior:

same as Playground
https://www.typescriptlang.org/v2/en/play?target=6&module=1&ts=3.9.0-beta#code/KYDwDg9gTgLgBAE2AYwDYEMrDsiA7AZ3lQEsAzFATzWAFl0wAuOAbwCgBIEwmdVVZuw4cs6BPlSU4edAFtgzAETcifVIoDcnEcDESpAI2BloCuKPF5JcANqKwWFb36KAuluEX9cdGRjAoZi8rKTtIIic1RQAaOHssMABXA1ICAAsYuIdgMExgTPjgdKhuAGsAdygGAuKyyurY+wgiWrwKqrA3DwBfD1zkUsFtYOsZeSV+0s1h3UtrEgBzPFMAZWBUMmYYKETgDx09ELgjEywg2e8whOTUjMbs3KwCh-QBrpnD619-QPMLo7CzRgk3eHF6nCSKRI6SGnn+ozkZnsN2hGX2I0MxlM50+oUKkNuzwSeSJORR6QA8iFSSD7kCQe4PnMpN8AjjmbYmkQCajQeDwWxQJBYHBuD8yK9sABJAAy5CoNAAonhtpQ2EIMdJEcwiCU8AsPJrFsssGsNgB+ZgGCAQVC6PCG+GY05mTW67gLGyMg4c1m-N3bD1erTdNiC8DQeAwShgaVyijIah2+hgADSwEoBDgAF44KUMxAyHBo7HC3BSAmk3QGFpw8KozG4-LEzQUwAeVNwUD+PAILPu-U5uADhYAPiHJeAZYrCuTDDgADI4AAlFDQBAd2Ky5tV5Wq0e1uuRuBkRJ4ZAwEj4OALYAweOz4AAYVMHa7IB7fbg28rrYY6czUcAAoCGQEowBgAA5bVh0DQcAB84FTABKdVOHIOAgOhVNlnKPAHxbO0AJAsCSAg6D5GQ1COCEHQYESKA8HLHc-zAGxQPAqDEVcThQ04LB6MYzCZ0I6swB8LMf0fFNkPY0jyO4tg+KFY9T3PS9r1ve8WLtN9u2AXt+zghY4EQqTRJTACCGAjiyK48YkNQjU7wYpitIIqsXywEjOIo4BkLgc1zVYbQxjMWyFPkaJtBObFbG0DgAANsgAEhYCL7OAbpEu0VxouEP1mBsBLkqBNKMr87Lcvy0NlIjEU1IvK8mOw3D8J04AAL0j8DK-cyq0sjNrJ8uy-J1YzTMcnV5My0VJI81irLQujXOHGa-NFJiRIGhglLYIA
tsc Version 3.9.0-dev.20200408
node v13.12.0

export declare function getLifecycle<K extends string | ILifecycleMapKeys>(scriptName: K): {
    readonly name: "install";
    readonly before: readonly ["preinstall"];
    readonly after: readonly ["postinstall", "prepublish", "prepare", "preshrinkwrap", "shrinkwrap", "postshrinkwrap"];
} | {
    readonly name: "pack";
    readonly ignoreSelf: true;
    readonly before: readonly ["prepublish", "prepare", "prepack"];
    readonly after: readonly ["postpack"];
} | {
    readonly name: "publish";
    readonly before: readonly ["prepublish", "prepare", "prepublishOnly", "prepack", "postpack"];
    readonly after: readonly ["postpublish"];
} | ILifecycleEntry;

Actual behavior:

export declare function getLifecycle<K extends string | ILifecycleMapKeys>(scriptName: K): {
    readonly name: "install";
    readonly before: readonly ["preinstall"];
    readonly after: readonly ["postinstall", "prepublish", "prepare", "preshrinkwrap", "shrinkwrap", "postshrinkwrap"];
} | {
    readonly name: "publish";
    readonly before: readonly ["prepublish", "prepare", "prepublishOnly", "prepack", "postpack"];
    readonly after: readonly ["postpublish"];
} | ILifecycleEntry;
  export declare function getLifecycle<K extends string | ILifecycleMapKeys>(scriptName: K): {
      readonly name: "install";
      readonly before: readonly ["preinstall"];
      readonly after: readonly ["postinstall", "prepublish", "prepare", "preshrinkwrap", "shrinkwrap", "postshrinkwrap"];
  } | {
-     readonly name: "pack";
-     readonly ignoreSelf: true;
-     readonly before: readonly ["prepublish", "prepare", "prepack"];
-     readonly after: readonly ["postpack"];
- } | {
      readonly name: "publish";
      readonly before: readonly ["prepublish", "prepare", "prepublishOnly", "prepack", "postpack"];
      readonly after: readonly ["postpublish"];
  } | ILifecycleEntry;

Playground Link:

Related Issues:

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Ejecuta el ejemplo proporcionado de TypeScript 3.9.0-dev.20200408 con el tsconfig.json proporcionado y compara su .d.ts generado con la salida esperada del Playground. Rastrea la emisión de declaraciones para el tipo de retorno inferido de getLifecycle; se habrá completado cuando la declaración generada conserve la variante pack y coincida con el comportamiento esperado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.