#angular #typescript
Вопрос:
Я пытаюсь использовать Typescript для своего проекта firebase и получаю следующие ошибки.
error TS2693: 'Note' only refers to a type, but is being used as a value here.
Я использовал следующий код
interface Note {
image: string;
name: string;
pdf: string;
}
const itemname = Note.name;
Но это, похоже, не работает
вот импорт
import {
AngularFirestore,
AngularFirestoreCollection,
AngularFirestoreDocument,
} from '@angular/fire/firestore';
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/map';
вот другая часть
export class Advance11Component implements OnInit {
notesCollection: AngularFirestoreCollection<Note>;
notes: Observable<Note[]>;
constructor(private afs: AngularFirestore) {}
ngOnInit(): void {
this.notesCollection = this.afs
.collection('class11AdvancedTheory')
.doc(itemname)
.collection(itemname, (ref) => {
return ref;
});
this.notes = this.notesCollection.valueChanges();
}
}
Комментарии:
1. Ты имел в виду
type itemname = Note.name
илиconst itemname: Note.name
. Как следует из ошибки,Note.name
это тип, и вы используете его в качестве переменной
Ответ №1:
interface
(Или type
) может сказать вам форму чего-то.
// A `tree` has a number of `branches`.
interface Tree {
branches: number
}
Экземпляр (например const x = ...
) присваивает определенное значение, на которое можно ссылаться во время выполнения.
// This `tree` has 34 `branches`.
const myTree: Tree = { branches: 34 }
Вы не можете смешивать эти два элемента во время выполнения заданий. Взяв ваш пример, вы бы спросили «Сколько branches
у myTreeBranches
вас есть?», и он сказал бы « typeof Tree.branches
есть number
«, информация, которая не полезна или не поддерживается в JavaScript.
// Doesn't work
const myTreeBranches = Tree.branches // typeof `Tree.branches` is `number`.
Вы, наверное, хотите один из этих:
interface Tree {
branches: number
}
type TreeBranches = Tree['branches'] // extract an interface property
const myTree: Tree = { branches: 34 } // create an instance of `Tree`
const myTreeBranches: Tree['branches'] = 34 // create variable that could be assigned to
// an instance of `Tree`