ts那些记得有些烦的定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | // 来自antd的menu组件定义 export interface SelectParam { key: string; keyPath: Array<string>; item: any; domEvent: Event; selectedKeys: Array<string>; } export interface ClickParam { key: string; keyPath: Array<string>; item: any; domEvent: Event; } export declare type MenuMode = 'vertical' | 'vertical-left' | 'vertical-right' | 'horizontal' | 'inline' ; export interface MenuProps { id?: string; theme?: MenuTheme; mode?: MenuMode; selectable?: boolean; selectedKeys?: Array<string>; defaultSelectedKeys?: Array<string>; openKeys?: Array<string>; defaultOpenKeys?: Array<string>; onOpenChange?: (openKeys: string[]) => void; onSelect?: (param: SelectParam) => void; onDeselect?: (param: SelectParam) => void; onClick?: (param: ClickParam) => void; style?: React.CSSProperties; openAnimation?: string; openTransitionName?: string; motion?: Object; className?: string; prefixCls?: string; multiple?: boolean; inlineIndent?: number; inlineCollapsed?: boolean; subMenuCloseDelay?: number; subMenuOpenDelay?: number; focusable?: boolean; onMouseEnter?: (e: MouseEvent) => void; getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement; overflowedIndicator?: React.ReactNode; forceSubMenuRender?: boolean; } |
最近常用的:
const modalForm = useRef<any>(null);
const [data, setList] = useState<any[]>([]);
const [simpleTreeList, setSimpleTreeList] = useState<never[]>([]);
const [relaCity, setRelaCity] = useState<{
id: string;
areaList: Array<{ addressCode: string; addressName: string }>;
}>();
type和interface
相同点:他们都是用来定义对象(或函数形状)的,都支持继承并可以互相继承。
不同点:
-写法不同,一个是type example = {},一个是 interface excample {}
- type可以定义基本类型的别名,比如:type myString = string;
- type可以通过typeof操作符进行定义,比如:type myType = typeof myObj;
- type可以声明联合类型,比如:type unionType = myType | myType2;
- type可以声明元组类型,比如:type yuanzu = [myType, myType2];
- interface可以声明合并(若是type则会报【重复定义】的警告),比如:
1 2 3 4 5 6 7 8 9 10 11 12 13 | interface myInterface { name: string; } interface myInterface { age: nuber; } 那么myInterface 最后为: { name: string; age: nuber; } |
declare
以declare生命的变量和模块,其他地方无需引入即可使用(需要在配置文件下引入声明文件,之后在include包含的文件范围内都可直接使用)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具