Estoy tratando de declarar un objeto y establecer los valores predeterminados en mi aplicación ionic 2, pero todavía no entiendo muy bien TypeScript y Angular2.
Hice esto:
@Component({ selector: 'page-weightlevel' , templateUrl: 'weightlevel.html' }) export class WeightlevelPage { name: string; firstNavParam: boolean; data = any; data.shareoptions: ['Facebook', 'Twitter', 'Email']; data.techniqueText: string; data.frequScaleWording: string[]; data.fitnessWording: string[]; data.levelName: string[]; constructor( public navCtrl: NavController, ....y me sale este error:
Typescript Error ';' expected. src/pages/weightlevel/weightlevel.ts data.shareoptions: ['Facebook', 'Twitter', 'Email'];el punto entre data y shareoptions aparentemente no es bienvenido.
¿Cómo puedo hacer esto?
La forma de declarar/iniciar un Objeto en Typescript es, como dice el nombre, escribiendo sus datos. Podría optar por any , pero eso simplemente desafía el propósito de TypeScript. Entonces, en su lugar, cree un modelo con las propiedades deseadas y, por lo tanto, declarar un objeto vacío sería:
data: MyType = <MyType>{}; Lo que está tratando de hacer ahora es asignar datos a su objeto. Para eso, usa =
ngOnInit() { this.data.shareOptions = ['Facebook', 'Twitter', 'Email'] }Según lo discutido en los comentarios, naturalmente podría declarar la matriz dentro del Objeto en el componente de esta manera:
data = <MyType>{shareOptions:['Facebook','Twitter','Email']};Sin embargo, recuerde que incluso al declarar un tipo, por ejemplo, una interfaz, no existe en tiempo de ejecución. El tipeo es solo para que el compilador lo ayude y le diga cuándo está tratando de asignar valores o propiedades que no existen en su modelo. Por lo tanto, puede anular todos los modelos y su aplicación se ejecutará sin errores.
¡ Pero escriba sus datos y evite usar
any!
en mi experiencia, creé el objeto de la siguiente manera. pero recibí errores cuando ejecuté el script de compilación en angular 5.2. entonces utilicé la segunda forma.
Sentido Contrario:
data = {};manera correcta:
data:any = {};En caso de que ya haya una clase modelo creada
let car = <ICar>{}; car.Name= "Audi"; car.Model = "A4"; car.category = "German";