__extends继承Array时,不符合预期
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
- Área
- tooling
Línea de trabajo
Comienza con el helper __extends mostrado en el issue y reproduce el ejemplo de la subclase de Array. Compara su comportamiento con el enfoque _wrapNativeSuper(Array) de Babel y verifica después que la subclase conserve el comportamiento esperado de toString y width tras la compilación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
源码:
class B extends Array{
get width(): number {
return 20;
}
toString(): string {
return "class B";
}
}
const b1 = new B();
b1.push("kkkkk")
console.log(b1.toString());
console.log(b1.width);
//class B
//20
转译代码
(function(){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var B = /** @class */ (function (_super) {
__extends(B, _super);
function B() {
return _super !== null && _super.apply(this, arguments) || this;
}
Object.defineProperty(B.prototype, "width", {
get: function () {
return 20;
},
enumerable: false,
configurable: true
});
B.prototype.toString = function () {
return "class B";
};
return B;
}(Array));
var b1 = new B();
b1.push("kkkkk")
console.log(b1.toString());
console.log(b1.width);
})();
// kkkkk
// undefined
b1.toString()走了 原生 Array 的 toString,原型链已经乱了。
对照babel的转译代码,得到的解决方案
// babel _wrapNativeSuper方法
// }(Array));
}(_wrapNativeSuper(Array)));
现在,他可以正常的工作了。
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.3k
- Forks
- 146
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de microsoft/tslib
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 1/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 15/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Performance improvementAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
Todos los issues de microsoft/tslib
Issues similares
-
bug(sight): the dashboard's text truncations split surrogate pairs and show broken charactersAbiertocomponent:sight
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
agentic-os-org/ANOLISA#6738 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
bug Durable Agents Observability (AI Telemetry) status: needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
mastra-ai/mastra#26470 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
paperclipai/paperclip#15630 ·
Los mantenedores suelen responder en 1 día
-
[good first issue, hacktoberfest] ⛩️ Add new Theme: Sakura Latte (good-first-issue)Posiblemente ocupada @PGrayCS la tomó hoy. Abiertocommunity first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
lingdojo/kana-dojo#31937 · 1 comentario · 5 reacciones ·
Los mantenedores suelen responder en 1 día
-
feature/cohorts feature/feature-flags team/feature-flags
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día