10-34思考题答案

来源:11-36 【仿 Nestjs 装饰器实战】 依赖注入实现和升级自动装配装饰器

crazyones110

2021-10-07

class UserController {

  @Autowired("userServiceImpl")// 修改Inject 为更专业的 Autowired 单词
  private userServiceImpl!: UserServiceInter // 修改Inject 为更专业的 Autowired 单词


  public login(): void {
    (this.userService as UserServiceImpl).register();
  }
}

就是用了as类型断言感觉不是很优雅

还有就是我理解的依赖注入的好处就是

import UserServiceImpl from "./UserServiceImpl";

// 伪接口
export default class UserServiceInter { // 作用等价于 Paper, 一个公共的父类
  public static getServiceImplClass() {
    return UserServiceImpl; // 若需求变更, 直接在这里改成CustomerServiceImpl即可
  }
}
写回答

1回答

keviny79

2021-10-09

业界有个误区,以为用了 typescript 再偶尔用几次 as any 和any  就以为 不 typescript ,  但其实typescript之所以弄出一个 any  as any 它一定有他们的用武之地,  当一个类型无论怎么做 都无法推导 或无法获取提示 或类型编译期间必须为不确定类型时 就可以用any 和 as any, 比如 自定义守卫参数 一定要用 any

这就好像 有了依赖注入 提倡 创建和使用分离, 看到 new 就以为不好,但其实 在任何一个依赖注入的项目里,都不可能一个new 都没有。

0
1
crazyones110
那我这个方法没毛病对吧, 因为在AutoWired装饰器里defineProperty过了, 唯一要注意的就是在Controller控制器里bind一下this
2021-10-09
共1条回复

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程