@casl/prisma是否可使用原生JavaScript编写,还是必须使用TypeScript?
你完全可以使用普通JavaScript开发@casl/prisma相关功能,不需要强制使用TypeScript。
TypeScript支持:本包使用TypeScript编写...
这段表述仅说明包本身的开发技术栈,以及它内置了完整的类型声明供TypeScript开发者使用。所有TypeScript编写的npm包最终都会编译为标准JavaScript代码发布,原生JavaScript环境可以正常引入、调用所有功能,你提到的type AppAbility这类类型相关代码仅在TypeScript项目中需要,JS项目直接忽略相关类型定义即可正常使用。
官方示例优先采用TypeScript只是因为CASL生态的TS支持是核心特性之一,方便有类型需求的开发者参考,并不代表JS不能使用。所有@casl/prisma的功能在JS和TS环境中表现完全一致,没有任何功能限制,你可以按需选择开发语言。
以下是原生JS中使用@casl/prisma的极简示例:
const { createPrismaAbility, subject } = require('@casl/prisma'); const { AbilityBuilder } = require('@casl/ability'); const { can, build } = new AbilityBuilder(createPrismaAbility); // 定义权限:允许读取authorId为1的Post内容 can('read', 'Post', { authorId: 1 }); const ability = build(); // 权限校验 console.log(ability.can('read', subject('Post', { authorId: 1, title: '测试文章' }))); // 输出true
内容的提问来源于stack exchange,提问作者shmuels
相关产品推荐
相关产品推荐

