有人可以向我解释这段代码吗?
getAll() {
return this.http.get<User[]>(`${environment.config.apiUrl}/users`);
}
此代码取自该stackblitz https://stackblitz.com/edit/authenticationdemo?file=src%2Fapp%2Fservices%2Fuser.service.ts的user.service.ts 我知道environment.config是在environment / environment.ts中声明的变量,但我不明白其含义:
export const environment = {
production: false,
config: <any> ""
};
我也不明白'apiUrl'是一种什么样的方法,在哪里引用?我正在寻找解释,有关它的文档也很好,我已经尝试过,但是在官方文档中没有找到任何内容。这种“ http.get”代码的表示形式有名称吗?谢谢朋友
答案 0 :(得分:1)
我建议您先熟悉Typescript语法。
get<User[]>(...)
表示此函数的输出为User[]
数据类型。尖括号的用法是Typescript中泛型的语法,就像.NET中一样。
`${environment.config.apiUrl}/users`
注意``。这不是字符串语法,而是字符串文字或字符串模板或template literals的语法。所有这些都是纯语法糖。 ${variableName}
可以在模板文字中使用,以替换其在最终字符串中的值。在这种情况下,代码打算替换字符串中的environment.config.apiUrl
的值。
现在,在environment
对象中,config属性当前具有字符串值。 <any> ""
语法用于将空字符串的数据类型转换为“ any”。
要使代码正常工作,您需要将空字符串更改为对象。像这样:
config: <any> {
apiUrl: "http://your-api-domain/"
}
现在,您的apiUrl
是在environment.config
对象中定义的。注意:不需要<any>
类型转换。
答案 1 :(得分:1)
让我们一步一步地了解它。
return this.http.get<User[]>(`${environment.config.apiUrl}/users`);
http
是从服务中的angular注入的HttpClient的实例
get
是将对目标参数url执行http GET请求的功能
<User[]>
是一种泛型类型,它表示http get将返回那些Observable的observable,并且在那里可以确保类型安全。
environment.config
的类型为any。这意味着在编译期间,它不是类型安全的,并且您可以访问任何属性,即使它不存在。
访问它时,它是未定义的值,不会引发错误。由于该服务是伪造的,并且价值无关紧要,因此该代码有效