microsoft / microsoft/TypeScript
Add base class in lib.scripthost.d.ts for Automation objects
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
TypeScript Version: 2.5.0 / nightly (2.6.0-dev.20170902)
Code
// in lib.scripthost.d.ts
class AutomationObject<T> {
private constructor();
private typekey: AutomationObject<T>;
}
// in activex-excel.d.ts
declare namespace Excel {
class Application extends AutomationObject<Application> {
Workbooks: any;
}
}
interface ActiveXObject {
new(progid: 'Excel.Application'): Excel.Application;
}
// usage
let x: Excel.Application = new ActiveXObject('Excel.Application');
This currently wouldn't compile, because of the private constructor in the base class; but pending resolution of #18283, it would be possible.
This would prevent assigning structurally matching objects to the inheriting types:
// Compiler error
x = {
Workbooks: [];
};
and also prevent using new to create a new instance of the inheriting type:
// Compiler error
x = new Excel.Application();
I've opened an issue to define similar behavior for VarDate and SafeArray<T> in lib.scripthost.d.ts. If AutomationObject<T> is defined, then it could be used in lib.scripthost.d.ts as a base class for these types as well:
declare class VarDate extends AutomationObject<VarDate> { }
declare class SafeArray<T> extends AutomationObject<SafeArray<T>> { }
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 lib.scripthost.d.ts et examinez la déclaration proposée de AutomationObject ainsi que son utilisation comme base pour VarDate et SafeArray. Vérifiez d’abord la résolution des issues #18283 et #17526 ; c’est terminé lorsque les déclarations imposent les restrictions structurelles et de construction décrites sans casser les définitions de scripthost.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100