SAPUI5, dattiloscritto e tipo Alias, come usare la nuova parola chiave con l’alias di tipo

in SAPUI5, esiste una convenzione per i tipi di alias su nomi di moduli più brevi usando il loro caricatore di moduli, ad esempio ::::

sap.ui.define([
    "sap/ui/core/mvc/Controller", 
    "sap/ui/model/json/JSONModel",
], function (Controller, JSONModel) {

ora voglio creare una classe di dattiloscritto contenente il codice interno, ma trovo che se ho impostato un parametro come ‘JSONModel: sap.ui.model.JSONModel’ – allora non posso usare ‘new’ con esso. penso che sia perché il nome breve è una specie di definizione della classe piuttosto che un’istanza di esso (o qualcosa) e non so come specificare che come un tipo in TS.

noto che il tipo lungo ‘sap.ui.model.json.JSONModel’ può essere usato con la nuova parola chiave, e ho anche notato che è possibile alias tipi come ‘tipo JSONModel = sap.ui.model.json.JSONModel’, il problema è che non funziona in tutti i casi:

namespace EX {
    type JSONModel = sap.ui.model.json.JSONModel;

    export class Example {

        public constructor(con: sap.ui.core.mvc.Controller) {

            let model1 = new JSONModel();

            let model2 = new sap.ui.model.json.JSONModel();

        }
    }
}

model1 non validerà ‘(TS) JSONModel è un tipo, ma è usato come valore qui’, ma model2 va bene. cosa c’è di più ‘TYPE’ della nuova parola chiave? che cosa sto facendo male. saluti.

sto usando dattiloscritto 3.1 in VS2017 – la mia definizione ambientale per JSONModel è fatta in casa, così il problema potrebbe essere in là.

EN From: SAPUI5, Typescript and Type Aliases, how to use new keyword with type alias

More similar articles:

1 Comment

  1. ho completamente perso la risposta ovvia al mio problema. invece di usare la parola chiave ‘type’, usi la parola chiave ‘import’:

    import JSONModel = sap.ui.model.json.JSONModel;

    questo permette ‘nuovo’ e riferimento alle proprietà statiche e metodi, perché assegna un nuovo nome per tutti i significati del nome.

Leave a Reply

Your email address will not be published. Required fields are marked *