{"id":22461568,"url":"https://github.com/StaticScript/StaticScript","last_synced_at":"2025-08-02T05:31:21.493Z","repository":{"id":37501491,"uuid":"272354688","full_name":"StaticScript/StaticScript","owner":"StaticScript","description":"A new statically typed programming language, syntactically like TypeScript.","archived":true,"fork":false,"pushed_at":"2021-05-17T13:39:59.000Z","size":199,"stargazers_count":337,"open_issues_count":0,"forks_count":14,"subscribers_count":49,"default_branch":"master","last_synced_at":"2024-12-06T09:08:14.333Z","etag":null,"topics":["compiler","language","llvm","programming-language","static-typing","staticscript","typescript"],"latest_commit_sha":null,"homepage":"https://staticscript.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StaticScript.png","metadata":{"files":{"readme":"README-zh_CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-15T06:00:23.000Z","updated_at":"2024-12-05T05:54:09.000Z","dependencies_parsed_at":"2022-09-15T07:00:26.806Z","dependency_job_id":null,"html_url":"https://github.com/StaticScript/StaticScript","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/StaticScript/StaticScript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StaticScript%2FStaticScript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StaticScript%2FStaticScript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StaticScript%2FStaticScript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StaticScript%2FStaticScript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StaticScript","download_url":"https://codeload.github.com/StaticScript/StaticScript/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StaticScript%2FStaticScript/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268339399,"owners_count":24234544,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","language","llvm","programming-language","static-typing","staticscript","typescript"],"created_at":"2024-12-06T09:03:09.237Z","updated_at":"2025-08-02T05:31:21.011Z","avatar_url":"https://github.com/StaticScript.png","language":"C++","readme":"\u003ch1 align=\"center\"\u003eStaticScript\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\nStaticScript是一门类TypeScript的静态编译型语言\n\n![Github Workflow Status](https://img.shields.io/github/workflow/status/StaticScript/StaticScript/Build?style=flat-square)\n![Platform](https://img.shields.io/badge/platform-linux--64%20%7C%20macos--64-brightgreen?style=flat-square)\n![License](https://img.shields.io/github/license/StaticScript/StaticScript?style=flat-square)\n\n![GitHub Repo stars](https://img.shields.io/github/stars/StaticScript/StaticScript?style=flat-square\u0026color=brightgreen)\n![GitHub forks](https://img.shields.io/github/forks/StaticScript/StaticScript?style=flat-square\u0026color=brightgreen)\n![GitHub issues](https://img.shields.io/github/issues-raw/StaticScript/StaticScript?style=flat-square)\n![GitHub pull requests](https://img.shields.io/github/issues-pr-raw/StaticScript/StaticScript?style=flat-square)\n\n![GitHub Repository Size](https://img.shields.io/github/repo-size/StaticScript/StaticScript?style=flat-square\u0026color=brightgreen)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/StaticScript/StaticScript?style=flat-square\u0026color=brightgreen)\n![GitHub top language](https://img.shields.io/github/languages/top/StaticScript/StaticScript?style=flat-square\u0026color=brightgreen)\n\n[English](./README.md) | 简体中文\n\n\u003c/div\u003e\n\n## 安装\n\n### Ubuntu\n\n```shell\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/StaticScript/StaticScript/master/install-ubuntu.sh)\"\n```\n或者\n```shell\nwget https://raw.githubusercontent.com/StaticScript/StaticScript/master/install-ubuntu.sh\nsudo chmod +x install-ubuntu.sh\nsudo /bin/bash install-ubuntu.sh\n```\n\n\u003e 对于其他的Linux发行版, 你需要修改安装脚本才能正常安装\n\u003e \n\u003e 安装脚本需要sudo权限\n\n### macOS\n\n```shell\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/StaticScript/StaticScript/master/install-macos.sh)\"\n```\n或者\n```shell\nwget https://raw.githubusercontent.com/StaticScript/StaticScript/master/install-macos.sh\nsudo chmod +x install-macos.sh\nsudo /bin/bash install-macos.sh\n```\n\n\u003e 安装脚本需要sudo权限\n\n### Windows\n\n**_暂不支持_**\n\n\n## 使用\n\n首先编写像下面这样一个合法的StaticScript代码文件\n```typescript\n// test.ss\n\nlet content: string = \"Hello World\";\n\nss_println_string(content);\n```\n\n然后在命令行里执行下面这样的命令\n```shell\nstaticscript test.ss -o test\n./test\n```\n\n## 语言特性概要\n\n### 变量和常量的声明\n\n下面是一些变量声明\n\n```typescript\nlet flag: boolean = true;\nlet count: number = 20;\nlet content: string = \"Hello World\";\n```\n\n得益于StaticScript的类型推导特性, 我们可以把上面的变量声明写成下面这样, 它们是等效的\n\n```typescript\nlet flag = true;\nlet count = 20;\nlet content = \"Hello World\";\n```\n\nStaticScript的编译器可以巧妙地从变量的初始值推导出变量的类型\n\n除了使用`let`声明变量外，还可以使用`const`声明常量\n\n```typescript\nconst name = \"StaticScript\";\nconst age = 1;\nconst developing = true;\n```\n\n`let`和`const`的区别在于`const`声明的常量不能被修改\n\n### 变量运算\n\n可以使用多种多样的运算符对变量执行操作，包括算术运算、按位运算、逻辑运算、关系运算、赋值和字符串连接\n\n```typescript\nlet a = 1;\nlet b = 2;\n\n// 加减乘除\nlet sum = a + b;\nlet diff = a - b;\nlet product = a * b;\nlet quotient = a / b;\n\na = a \u003c\u003c 1; // 等效于 `a \u003c\u003c= 1`\nb = b \u003e\u003e 1; // 等效于 `b \u003e\u003e= 1`\n\nlet year = \"2020\", month = \"08\", day = \"06\";\nlet birthday = year + \"/\" + month + \"/\" + day;\n```\n\n### 控制流\n\n```typescript\nlet a = 1;\nlet b = 100;\nif (a \u003c b) {\n    ss_println_string(\"b更大\");\n} else {\n    ss_println_string(\"b不比a大\");\n}\n\n\nlet max = a;\nif (a \u003c b) {\n    max = b;\n}\n```\n\n### 循环\n\nStaticScript支持使用`while`语句和`for`语句执行一些重复的操作\n\n```typescript\n// 计算[1, 100]间所有偶数的和\nlet sum1 = 0;\nlet i = 1;\nwhile(i \u003c= 100) {\n    if (i % 2 == 0) {\n        sum1 += i;\n    }\n}\n\n\n// 计算[1, 100]间所有整数的和\nlet sum2 = 0;\nfor(let i = 1; i \u003c= 100; i++) {\n    sum2 += i;\n}\n```\n\n### 函数\n\nStaticScript支持在顶级范围内定义函数并在任何作用域内使用函数\n\n```typescript\nfunction add(a: number, b: number): number {\n    return a + b;\n}\n```\n\nStaticScript可以通过return语句的表达式来推断返回类型, 因此上面的函数可以省略返回类型\n\n需要注意的是，函数的参数类型必须显式声明, 不能省略","funding_links":[],"categories":["Experimental/Research Projects"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStaticScript%2FStaticScript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FStaticScript%2FStaticScript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStaticScript%2FStaticScript/lists"}